Sql Visual Basic Express 2010中的更新查询
我正在尝试通过SQL使用Visual Basic Express 2010更新Access 2003数据库,到目前为止,我已经完成了选择、删除和插入查询,但更新不会Sql Visual Basic Express 2010中的更新查询,sql,visual-studio-2010,Sql,Visual Studio 2010,我正在尝试通过SQL使用Visual Basic Express 2010更新Access 2003数据库,到目前为止,我已经完成了选择、删除和插入查询,但更新不会 con.ConnectionString = dbProvider & dbSource con.Open() 'Open connection to the database sqlstatement = "U
con.ConnectionString = dbProvider & dbSource
con.Open() 'Open connection to the database
sqlstatement = "UPDATE users SET password = '" & NewPassword & "' WHERE USERID = " & ID & ";"
Dim dc As New OleDb.OleDbCommand(sqlstatement, con)
dc.ExecuteNonQuery()
con.Close()
正如我所说,所有其他语句都有效,产生的错误是:
谢谢大家! 第一个问题是密码这个词。它是MS Access数据库中的保留关键字。如果你想使用它,你应该把它放在方括号里 也就是说,在处理任何类型的数据库时,请开始使用参数化查询,而不是字符串连接 因此,您的代码应该是:
sqlstatement = "UPDATE users SET [password] = ? WHERE USERID = ?"
Using con = new OleDbConnection(dbProvider & dbSource)
Using dc = new OleDbCommand(sqlstatement, con)
con.Open()
dc.Parameters.AddWithValue("@p1", NewPassword)
dc.Parameters.AddWithValue("@p2", ID)
dc.ExecuteNonQuery()
End Using
End Using
您可以阅读参数化查询的重要性,在许多地方,它是最著名的一个