'INSERT INTO语句中的语法错误。'无法将数据插入数据库

时间:2018-05-12 09:41:03

标签: sql vb.net ms-access ado.net

我正在为程序创建一个注册表单但是我无法获取用于保存到microsoft访问数据库的用户名和密码。我没有看到我的代码出错的地方,我在INSERT INTO语句中不断收到“语法错误”。这是我的代码......

    Dim sql As String = "INSERT INTO Users (username, password) VALUES (" & Me.Usernametxtb.Text & "','" & Me.Passwordtxtb.Text & "')"

        Dim cms As New OleDbCommand(sql, conn)
        cms.Parameters.AddWithValue("@username", Usernametxtb.Text)
        cms.Parameters.AddWithValue("@password", Passwordtxtb.Text)
        cms.ExecuteNonQuery()

2 个答案:

答案 0 :(得分:1)

您正在添加参数,但您的语句未参数化。如果不使用@username在SQL语句中引用这些参数,则不会在任何地方使用它们。第一行仍然容易受到SQL注入攻击,因为你要连接原始用户输入。

此外,do not store passwords in plaintext, ever.

答案 1 :(得分:1)

密码是Access中的保留字,请尝试:

Dim sql As String = "INSERT INTO Users (username, [password]) VALUES (@username, @password)"

Dim cms As New OleDbCommand(sql, conn)
cms.Parameters.AddWithValue("@username", Usernametxtb.Text)
cms.Parameters.AddWithValue("@password", Passwordtxtb.Text)
cms.ExecuteNonQuery()