请问在vb.net中update数据库的问题

kncomputer 2003-08-24 11:50:42
If 条件 Then
sql = "update t_user set save=@save,lastDT=@lastDT where login=@login"
Else
sql = "insert into t_user(login,save,lastDT) values(@login,@save,@lastDT)"
End If
cm.CommandText = sql
cm.Parameters.Add("@login", OleDbType.VarChar).Value = login
cm.Parameters.Add("@save", OleDbType.Boolean).Value = ChkSavePwd.Checked
cm.Parameters.Add("@lastDT", OleDbType.Date).Value = Now()
cm.ExecuteNonQuery()

注:程序中cm是一个oledbcommand
连接到数据库的语句是:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\my.mdb

现在问题是:为什么当sql=那条insert into时,程序正确的执行并往数据库中添加了一条记录,
但当sql是那么update时,程序却出错?
真是百思不得其解.请指教,万分感谢!
...全文
47 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljycn 2003-08-27
  • 打赏
  • 举报
回复
cm.Parameters.Add("@login", OleDbType.VarChar).Value = login
VarChar必须指定大小,默认是1个字符
例如:
cm.Parameters.Add("@login", OleDbType.VarChar,50).Value = login
试一试
zjao99 2003-08-27
  • 打赏
  • 举报
回复
也不一定是OleDbcommand的问题.
你直接用你的Update的语句到你的数据库里验证一下能否在库里进行更新.
kncomputer 2003-08-26
  • 打赏
  • 举报
回复
有,有主键.但我在update的where子句中改为主键的判断也不行!help me!
xzguyufeng 2003-08-26
  • 打赏
  • 举报
回复
OleDbCommand 在每一次使用时必须经过 New 重新构造,否则将会造成不可预知的错误.
所以在前面加上一句命令重新构造语句就不会出现错误了.
kncomputer 2003-08-26
  • 打赏
  • 举报
回复
cm是怎么定义的?当然是dim cm as oledbcommand啊。
但它可能insert,为什么不能update,我认为没有这么一个oledbcommand会出现这样的情况吧。
nicefriend 2003-08-26
  • 打赏
  • 举报
回复
你的cm是怎么定义的?报的错误是怎样?
rock29 2003-08-25
  • 打赏
  • 举报
回复
主见有么
snow66 2003-08-25
  • 打赏
  • 举报
回复
...
cm.Parameters.Add("@save", OleDbType.Boolean).Value = ChkSavePwd.Checked
cm.Parameters.Add("@lastDT", OleDbType.Date).Value = Now()
cm.Parameters.Add("@login", OleDbType.VarChar).Value = login
...

16,549

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧