【机房重构】遇到的错误

     虽然机房敲的不多,但是出的问题却是不少。很多的问题就是一个大意,但是却是让我寻找老半天,但是解决之后,就会从迷雾中,变得柳暗花明。

一、<方法名>具有多个带有相同标签的定义。

     问题如下图,这是我在D层写的sqlhelper 中的定义。在sqlhelper 是一个带有参数的增删改我写的名字是:exeAddDelUpdate,不带参数的事exeAddDelUpdateNo。但是错误原因如下:

Function或Sub过程声明使用的过程名称与以前的声明相同,但是这两个Function的名称不一样啊。我就尝试把前面的exe给去掉了,改成为了AddDelUpdate 和AddDelUpdateNo,然后就不报错了。加上exe就有错误,在网上查了资料,也没有得到满意的答案,还请大家多多指教。






二、重载决策失败,原因是没有可访问的AddRange可以调用这些参数。如下图:




     原因很简单,就是sqlParameter后面,忘记了加上括号。因为添加的是一系列的参数,所以就会报错。sqlParameters常用的方法有Add和Arrange。Add方法是每次只能够添加一个sqlparameter,如果要添加多个的话,一般要用循环来一个个的添加,显然Add方法在添加多个sqlParameter时候是不方便的,此时可以采用AddRange方法,AddRange 增加的是一个参数的数组。

     在查的过程中,也了解了为什么使用sqlparameter。一般来说 ,在更新DataTable或者是DateSet时候,如果不采用sqlParameter ,那么当输入的sql语句出现歧义的是偶,如字符串中出现单引号时,程序就会发生错误。并且他人可以轻易的通过拼接sql 语句来进行注入攻击。如sql ="update StudentInfo set "Name ="zhenjuan" where Student ID='1' " ,其中的 单引号就十分危险。而采用sqlParameter 时,都是通过参数来传入的,就会少很多的麻烦,增强了安全性。除了安全性问题,该方法还无法解决二进制流的更新,如图片问题,通过使用sqlparameter可以解决上面的问题。更多详细的资料,请单击:sqlParameter的作用和使用


三、数据库连接问题出错。提示如下:


很明显,就是数据库操作的问题了,:链接没有初始化,就是没有链接没有成功!.仔细检查,是sqlhelper 中和配置文件中的字符串写错了。

如下图,配置文件(Configuration)中定义ConnStr是链接数据库的语句,在D层Sqlhelper中我引用的配置文件链接数据库的字符串应该也是”ConnStr",但是写错了,所以数据库就链接不上去。

再来看一下system.Configuratino.ConfigurationManager.AppSettings("ConnStr")这句话的意思,就是配置文件中获取key值为”ConnStr"的value值。突然在这个时候,才觉得对所谓的配置文件的作用明白了。


四、错误:“未将对象引用设置到对象的实例。

这个错误很常见,正如错误提示的:原因一:没有使用New关键字。这里出错是因为定义StudentIfno实体的时候,缺少了一个New字,因为没有实例化,所以在使用的时候,就会出现”未将对象设置到对象的实例“。第二个原因:调用方法时候,参数为Null。我在做的过程中很多是在B层出现,一看就是参数时为空,然后基本上就是D层数据库的问题。



五、数据库查询错误。




这一类的错误是在常见不过了,就是D层的需要的参数值从B层没有传过来,所以要去断点调试,看在哪里中断了。

在做的过程中中D层的错误很多,一般有:如上个问题,需要该参数,但是参数没有提供,解决方法就是找到参数在哪里中断了。二、sql语句写错,这个错误一般会的slqhper中设立的错误处理中扑捉。可以先吧sql语句放在数据库中检查是否错误,然后再调整。


小结:

     刚开始的时候是错误不断,但是就是这些错误让我对很多细节加深了理解。这个过程中断点调试和单步调试帮了我大忙。从原来不知道如何去设立断点,到现在知道如何在关键的地方设立断点,解决问题的速度也比原来快了。哈哈,战胜了这些,一下子路子宽多了,重构机房越来越有感觉 ,机房重构继续进行中...........





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 33
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值