C#手札,第一步。

来源:互联网 发布:泡菜音译软件 编辑:程序博客网 时间:2024/04/28 15:54

今天开始学C#。原因在刚刚的牢骚里说过了,不重复了,免得变婆妈了。

我一直的学习方式就是工作。所谓工作就是作东西。这次我工作目标是一个简单的源码管理器。注:我的手札只是记录一些C#的语法和一些让我找了N久才有答案的东西。关于编程思维,大家可以当垃圾一样丢一边不看。

使用的平台是:VWD 2005 Bate 中文版。.Net Framework 2.0,资料来源:.Net框架 SDK文档(版本不明,但肯定很老的SDK文档)。

今天我是作登陆部份,遇到了下面几个问题。

一、数据库方面:
OleDbCommand.ExecuteScalar()->SDK解释是:结果集中第一行的第一列。返回类型:object
我用这个来作验证帐号密码的。麻烦是:受ASP的影响,以为返回结果可以用is null来确认返回是否有数据。折腾了半天。才发现,C#判断Null是直接object == null来判断的。
收获:
  1)C#的null判断方式是object==null
  2)当OleDbCommand.ExecuteScalar()返回的不是Null时可以转换成Int。值是1
  3)string m_strData=(string) object 可以强型将Object转换成string。如果不能强行转换成string则会出错。

二、自定义类:
我的第一个Class是数据库链接类。其实就是从我在ASP里常用的数据库链接关闭函数及两个常用函数。有没用不知道,但是已经写上了。


遇到问题一:mappath
这个方法很普通,很常用。但是在cs文件里我引用哪个命名空间都会出错。折腾了几个小时后经高人指点,用HttpContext.Current.Server.Mappate通过。


收获二:object可以如何接受任何数据类型的值,当你无法确认字段的数据类型时可以使用。我是用在我那两个SQL注入防御函数内。intSQL(object A_intValue)和strSQL(object A_strValue,int A_intMaxlen)。intSQL作用是检查A_intValue中是否有非数字字符,如果有返回0。数据类型为string。因为要组成SQL句嘛。strSQL很只是将A_strValue中的一个单引号变成两个。然后再在前后加上一个单引号。如果A_strValue.length超过A_intMaxlen的话,A_strValue=A_strValue.substring(0,A_intMaxlen)。

收获三:最白痴的一个收获。就是放在App_Code目录下的Class,可以在全站的C#代码里直接用new实例化。而不用用using引用一下才能使用。为了这个我也折腾了一个多小时,结果发现是因为new实例化时没在类名后加上()才出的错。有够累人的。

自己摸索真的很累人。有时为一些很白痴的问题折腾不少的时间。因为问题太白痴,还没地方找答案。真是郁闷。所以,把自己遇到的麻烦都写出来,让那些跟我一样为这些小问题而头痛的人不用这么麻烦。

在这里感谢一下所有在群里帮助过我的人们,不是他们,估计我现在还在为上面那些小麻烦困扰呢,谢谢。