运行查询时出错

时间:2014-12-30 14:44:21

标签: vb.net

这是我的代码。

Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\speednet\speed_net.accdb")
Dim com As New OleDbCommand
con.Open()
com.Connection = con
com.CommandText = "insert into users (name,username,password,user_type) values ('" & name1.Text & "' ,'" & username.Text & "' ,'" & password.Text & "','" & account_type.Text & "')"
com.ExecuteNonQuery()

错误:

  

插入语句中的语法错误...

找不到问题。

1 个答案:

答案 0 :(得分:2)

Password is a reserved keyword访问权限。你需要围绕这个词的方括号 但是您的查询也应该被修改为使用parameter approach而不是字符串连接,否则可能会出现更危险的情况。阅读Sql Injection以及如果您的一个连接字符串包含单引号会发生什么。

所以

Using con = New OleDbConnection("....")
Using com = New OleDbCommand("insert into users " & _ 
                             "(name,username,[password],user_type) " & _ 
                             "values (@name, @uname,@pass,@acctype)", con)
    con.Open()
    com.Parameters.AddWithValue("@name", name1.Text)
    com.Parameters.AddWithValue("@uname", username.Text)
    com.Parameters.AddWithValue("@pass", password.Text)
    com.Parameters.AddWithValue("@acctype", account_type.Text)
    com.ExecuteNonQuery()
End Using
End Using