一个问题困扰多时,最终的结论,是因为自己不小心所致。
开发时测试已经OK的程序,交给用户使用也没有问题,过了几天,用户反映更新不了。把最新数据库导入开发本机测试,确实是GridView无法更新。
Debug用F11进行跟踪,程序完全顺利跑完,数据库中的数据即没有更新。
在sql Server的查询分析器执行更新存储过程,发现数据库的数据已经更新了。
检查到此步,说明存储过程没有问题,原因在程序中。
再一次Debug跟踪,这次非常仔细,每一步都查看完,最终发现主健在传入为空。
看到这些,为何程序刚开始是OK的呢?Insus.NET有点想不明白,进入程序打开类别查看更新事件,问题找出来,原来就在这里。
开发时,没有仔细,在第一次检查时,还是没有仔细进行Debug。程序刚开始是OK,原因为刚开始的记录主键小,还是符合TINYINT数据类型,自动生成大过TINYINT时,函数ConvertData就会把这个值转为空(null)了。
现在把代码改为传入INT数据类型,交给用户使用,程序正常了:
new Parameter("@ID", SqlDbType.Int, 4, ConvertData.ToInt(fqaId)),