Sql Visual Basic Express 2010中的更新查询

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

我正在尝试通过SQL使用Visual Basic Express 2010更新Access 2003数据库,到目前为止,我已经完成了选择、删除和插入查询,但更新不会

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
您可以阅读参数化查询的重要性,在许多地方,它是最著名的一个