在Visual Basic Express 2010中更新查询

时间:2013-10-23 10:12:29

标签: sql visual-studio-2010

我正在尝试通过SQL使用Visual Basic Express 2010更新Access 2003数据库,到目前为止我已经使用了SELECT,DELETE和INSERT查询,但更新不会...

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()

就像我说的,所有其他陈述都有效,产生的错误是:

http://i.stack.imgur.com/acFBT.png

谢谢!

1 个答案:

答案 0 :(得分:0)

第一个问题是PASSWORD这个词。它是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

您可以在许多地方了解参数化查询和Sql Injection的重要性,this link是最着名的一个