以下问题都是容易忽略,但却不容易找出问题的所在,让我头疼不少,故在此列出,即是一个总结,同样也给其他人参与!
1.使用参数形式执行SQL命令时,参数数组需与在SQL语句中参数名出现的位置及名称必须完全相同,否则执行不成功,但不会报错;
sql="insert table(a,b,c) values(@a,@b,@c)"
params={@a,@c,@b} --->这是错误的
params={@a,@b,@c} --->这是正确的
2.使用参数形式执行SQL命令时,当字段类型为时间类型时,需要显形声明参数类型为Date,不能采用参数名+值的形式
sql="update table set editdate=@dt"
param=new oledbparameter("@dt",DateTime.Now) -->这是错误的,执行时会报错:标准表达式中数据类型不匹配
param=new oledbparameter("@dt",OleDbType.Date){Value=DateTime.Now} -->这是正确的
3.注意ACCESS数据库保留字,尽量不要使用该类字作为字段名,若确实需要使用,则应该加上方括号,显示说明
sql="update user set name='xxx'" -->这是错误的
sql="update [user] set [name]='xxx'" -->这是正确的,显示说明非系统保留字