项目中常见bug及解决方法

时间:2022-02-12 16:22:55

1.执行插入数据库的操作。如果不知道字段值是什么样子,在在c#中执行插入操作存储过程时,可以启用数据库中的工具-SQL SERVER profiler来进行追踪。

2.loe4net配置文件中可以记录时间,设置为%d。在%d后加大括号可以设置时间格式。务必注意字母大小写!!

  例如:%d{yyyy-MM-dd HH:mm:ss}//可以写入数据库的格式

  同时,一般获取的当前时间DateTime.Now.ToString();得到的格式与上面相同

 

  或者%d{dd MM yyy HH:mm:ss,fff}。//这种写法完全没必要。因为log4net获取的时间本来就是精确到毫秒的。

 PS:HH:mm:ss,fff中,hh小写表示12小时制,比如16:30会被显示为04:30.。。HH大写表示24小时制。。。

3.测试数据时候插入了很多值,当前正式发布时需要将数据清空。此时的方法有两种

--SQL Server 自增字段归零(本段来自http://bbs.csdn.net/topics/350107880 6#回复)

--SQL Server 2005表自增字段在多次插入数据后,自增的ID号比较混乱,而且删除数据后,自增的ID并不会归零,有两种方法可以控制自增的字段:

方法一:如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数

    truncate table 表名

方法二:  dbcc checkident ('table_name', reseed, new_reseed_value)  当前值设置为  new_reseed_value。如果自创建表后没有将行插入该表,则在执行  DBCC  CHECKIDENT  后插入的第一行将使用  new_reseed_value  作为标识。否则,下一个插入的行将使用  new_reseed_value  +  1。如果  new_reseed_value  的值小于标识列中的最大值,以后引用该表时将产生  2627  号错误信息。

方法二不会清空已有数据,操作比较灵活,不仅可以将自增值归零,也适用于删除大量连续行后,重新设置自增值并插入新的数据;或从新的值开始,当然不能和已有的冲突。
当表中有了一下数据后
执行语句  DBCC CHECKIDENT ('dbo.Person', RESEED, 10) 后再通过Management Studio添加数据时,ID就会自动从11开始,也就是new_reseed_value+1开始

4.对于log4net的UDP传输数据时,发送端和接收端的数据格式务必完全一致!!!不然会有各种莫名其妙的你无法解决的错误。。

5.写了这样一段代码。数据库中写了一个插入操作的存储过程。然后在c#中执行该存储过程,往表里面写数据。但是。。。。。。

  开启接收端,插入254条数据后,就停止了接收。catch到的异常是:

  超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

  解决办法:我只写了conn.open();但是我没写conn.close();啦。所以在存储过程执行完的位置后加上conn.close();就可以了。