使用IDB2在VS2010中更新不起作用

时间:2014-08-07 06:58:22

标签: visual-studio-2010 ibm-midrange

尝试执行并插入或删除SQL命令时没有问题。但是,这个更新命令似乎不能正常工作,我很难搞清楚。请帮助我。

我使用的是i系列或AS / 400数据库。

Imports IBM.Data.DB2
Imports IBM.Data.DB2.iSeries
Public conn As New iDB2Connection
Public str As String = "Datasource=10.0.1.11;UserID=edith;password=edith;DefaultCollection=impexplib"
Dim cmdUpdate As New iDB2Command
Dim sqlUpdate As String
conn = New iDB2Connection(str)
conn.Open()
sqlUpdate = "UPDATE impexplib.expusers SET loginDate=@loginDate, loginTime=@loginTime WHERE username=@username"
cmdUpdate.Parameters.Add("username", iDB2DbType.iDB2VarChar)
cmdUpdate.Parameters.Add("loginDate", iDB2DbType.iDB2Date)
cmdUpdate.Parameters.Add("loginTime", iDB2DbType.iDB2Time)
cmdUpdate.Parameters("username").Value = txtUsername.Text
cmdUpdate.Parameters("loginDate").Value = Now.ToString("d")
cmdUpdate.Parameters("loginTime").Value = Now.ToString("T")
cmdUpdate.Connection = conn
cmdUpdate.CommandText = sqlUpdate
cmdUpdate.ExecuteNonQuery()
conn.Close()

请帮助我,我做错了什么?更新代码不起作用。即使是简单的密码更新也无效。

谢谢!

1 个答案:

答案 0 :(得分:0)

假设在任何地方都没有错误消息,如果没有发生更新,则不满足WHERE子句。确保DB2中的用户名与WHERE子句中使用的参数完全匹配。通常,DB2列是CHAR,而不是VARCHAR,反之亦然。您可能还遇到DB2列全部为大写且参数为大小写混合的情况。想象一下,DB2列有“FRED BLOGGS”,你的参数有“Fred Bloggs”。这将不满足WHERE子句,也不会更新任何行。