.Net版的三层登录敲完了,让我们把问题总结一下吧……
问题1、
想大家看见这个错误就应该能想到是在数据库连接的地方出现的。都怪我太粗心,明明应该是server,却写成了 sever。
但是为什么在写代码的时候没有报错呢?原因就是sqlconnection是一个打开sql sever的数据库连接,连接数据库的语句是以字符串的形式写出来的,字符串就是你写的时候是什么样就是什么样,没有错。但是当执行到的时候就会觉得不对,然后报错。
问题2、
这个问题是数据类型转换时发生的。
下面是我们的sql语句:
如图,我们的数据库中的ID是int类型,Username和password是varchar类型,当用户输入的用户名和密码与数据库中的内容进行对比时,由于类型转换不过来,所以会报错。
解决方法:我们可以在select语句中只选择我们要用户名和密码两项内容,这样就避免了ID去进行数据转换,也可以将数据库中的ID数据类型变了,这样也可以避免数据转换时出现问题。
问题3、
错误的产生原因在这!
看图片中的提示,刚开始不知道怎么修改,只是觉得这个变量怎么会可能为空值呢?然后我就查了一下出现这个问题的原因:http://blog.csdn.net/sollion/article/details/5777475
这个问题可能由那么多原因引起,我就凌乱了……然后就问了张峰,张峰让在AS后面加一个New试试……这样就可以了。原来是这个变量没有实例化。少了一个NEW 就是没有实例化?
看看下面就明白了:
Dim a as 类和dim as new 类有什么区别呢?
Dim a as 类指的是声明了a这个变量,但是并没有创建,意思就是我们只是定义了这个变量,但是并没有为这个变量分配内存空间,所以这个变量就是空值。我们只能再通过set a =new 类进行初始化,来为这个变量分配内存空间。
而dim a as new 类与 dim a as 类和set a =new 类两句综合起来的作用是一样的。既定义了变量,又初始化了变量。
你可能还会想,为什么有的时候不用进行实例化就可以呢?是因为有的变量系统自动的给实例化了,所以就不用自己再写一遍实例化的代码了。
总结:每一次新的学习都会遇到大大小小的各种问题,而我们就是在这些问题中一步一步的茁壮成长!fighting。。。