最近遇到一狂郁闷的事情,coding时,需要向数据库中插入DateTime类型的数据,有时需要插入NUll值,但插入过程中老是报系统错误,真是一点办法都没有,一直折腾了好几天,都没有搞定,郁闷得不行,好在最后终于发现了症结所在,贴出在与大家共享
我是使用存储过程进行数据插入的,使用参数的方法传值,这样也能够防止sql注入
当然系统错误的背后,首先程序是没有问题的,需要改正的地方是数据库级,在存储过程中将时间参数都设置一个null默认值就可以了,如下:
CREATE proc UP_Rsk_AddModel @ygcode varchar(6), @name varchar(8), @xb varchar(2), @bm varchar(32), @jg varchar(16), @mz varchar(16), @xl varchar(8), @sfzh varchar(32), @birth datetime = null, --不设置默认值,就告诉你系统错误,呵呵 @lyrq datetime = null, @address varchar(64), @phone varchar(32), @pricedown decimal(9,3), @password varchar(50), @remarks varchar(64), @sx1 varchar(1000), @sx2 varchar(100) AS if not exists(select * from rsk where ygcode = @ygcode) begin Insert into rsk(ygcode,name,xb,bm,jg,mz,xl,sfzh,birth,lyrq,address,phone,pricedown,password,remarks,sx1,sx2) select @ygcode,@name,@xb,@bm,@jg,@mz,@xl,@sfzh,@birth,@lyrq,@address,@phone,@pricedown,@password,@remarks,@sx1,@sx2 end GO
问题搞定,哈哈,终于可以松一口气了