机房收费系统常见错误整理

     

       从1月份开始做机房收费系统,到现在差不多完工了。把遇到的错误整理了一下,大致错误这几种,和大家分享:

       主要分为几大类:一、数据库问题;二、程序问题;三、数据库与程序连接问题

一、数据库问题:

主要是使用存储过程的问题:

1.未提供参数

机房收费系统常见错误整理_第1张图片

原因:传递进去的参数和存储过程所需参数不同;

解决方法:传进去的参数应该和存储过程中写的需要的参数相同。

 

2.SqlParameterCollection只接受非空的SqlParameter类型对象,不接受SqlParameter[]对象

机房收费系统常见错误整理_第2张图片

产生原因:对使用存储过程的语法不熟悉;Parameters.Add()与Parameters.AddRange()分不清楚;

解决方法:将Parameters.Add改为Parameters.AddRange

分析

MSDN的解释:

SqlParameterCollection.AddRange 

将值数组添加到 SqlParameterCollection 的末尾。 

Parameters.Add将指定的 SqlParameter 对象添加到 SqlParameterCollection 中。

其实我们可以理解为:Parameters.Add()增加的是一个参数;增加多个参数时使用一个foreach循环添加;Parameters.AddRange()增加的是一个参数的数组;

 

3.列名与关键字重复

最简单也最易犯的一种错误,数据库中列名与关键字重复。

 

4.计算问题

机房收费系统常见错误整理_第3张图片

产生原因:数据类型的问题,字符型的数据类型不能进行减法运算。

解决方法:改变数据列的数据类型;

分析:比如字符型的“1”和“2”相加;运算结果为“12”;值型的“1”和“2”相加;运算结果为“3”;

这些小细节都是需要注意的;

 

二、程序问题

1.SqlDateTime溢出

机房收费系统常见错误整理_第4张图片

产生原因:百度的,具体也不理解:

错误:“SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和12/31/9999 11:59:59 PM之间。”

出现这种问题多半是因为你插入或者更新数据库时datetime字段值为空默认插入0001年01月01日造成datetime类型溢出。

原因:

关于DateTime,在将DateTime类型,插入到数据库的时候,最容易出现的一种错误:“SqlDateTime溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间”原因是我们在取DateTime.MinValue的值,并插入到数据库的时候,DateTime.MinValue值范围和数据库DateTime类型数据范围不一致造成的。数据库中,DateTime类型字段,最小值1/1/1753 12:00:00,而.NET Framework中,DateTime类型,最小值为1/1/00010:00:00,显然,超出了Sql的值的最小范围,导致数据溢出的错误。

解决方法:

使用System.Data.SqlTypes.SqlDateTime.MinValue替代System.DateTime类型,这样SqlDateTime的MinValue和Sql中DateTime的范围吻合,就不会再出现以上的错误了。

 

2未能加载文件或程序集“DAL”或它的某一个依赖项,系统找不到指定文件

机房收费系统常见错误整理_第5张图片

产生原因:DAL层的生成路径有问题;

解决方法:修改DAL的生成路径为界面层下的Debug文件夹下;

分析:程序运行时是从界面层下的Debug文件夹下寻找所需DLL等文件;如果不能加载某个项则说明程序未找到该文件;所以查看该项的生成目录;

详情参考博客《相对路径与绝对路径》http://blog.csdn.net/kanglix1an/article/details/8531418

 

3.数据类型转换失败

机房收费系统常见错误整理_第6张图片

产生原因:Format函数返回的是字符串型

解决方法:如果想获得“yyyy/MM/dd”的时间日期格式,则获得时间时将变量定义为Date型;如果需要字符串型的时间,则将变量设置为字符串型;用Format转化一下;Format(日期,"yyyy/MM/dd")

 

三、程序与数据库连接问题

1.未将对象引用设置到对象的实例

 机房收费系统常见错误整理_第7张图片

产生原因

最根本的产生原因:

A.DataSet为空

B.未使用new初始化对象

分析

现阶段我们遇到这种问题的大部分原因是数据库连接失败,导致查询失败;数据库为何连接失败?

a.如果是远程数据库的话则查看数据库允许远程是否打开,防火墙是否关闭;

b.按一条线检查下来,看可能是那里出的问题:比如:反射接口失败;

解决方法

因为产生原因较多,所以说几种大概的思路:

1.如果使用了配置文件,检查配置文件是否连接数据库成功;

2.如果使用了反射,则检查反射是否成功;

3.检查是否查询内容不存在;

 

以上是几类小问题,很基础但容易被忽略的小问题。

 


你可能感兴趣的:(机房收费系统常见错误整理)