FROM子句中的语法错误 - MS。访问

时间:2014-07-09 03:44:59

标签: vb.net visual-studio-2010 ms-access ms-access-2010

以下是代码:

str = "select * from user where username= '" & txtUsername.Text & "' & password = '" & txtPassword.Text & "'"
perintah = New OleDbCommand(str, conn)
reader = perintah.ExecuteReader()

If reader.Read Then
    MessageBox.Show("login success")
Else
    MessageBox.Show("login failed")
End If

1 个答案:

答案 0 :(得分:0)

最直接的问题是“用户”是保留字。不是100%肯定Access,但它在大多数数据库中。尝试转义它,即“[user]”,看看是否能修复它。

我也注意到你正在使用“&”其中“AND”是您需要的运营商。我相信“密码”也是一个保留字,所以也要逃避。

尽管如此,你还有其他潜在的问题。使用字符串连接将值插入SQL代码是灾难的一个方法,不仅可能导致语法错误,更糟糕的是,打开SQL注入。 Read this了解更多信息。在这种情况下,具体做这样的事情:

str = "SELECT * FROM [user] WHERE username = @username AND [password] = @password"
perintah = New OleDbCommand(str, conn)
perintah.Parameters.Add("@username", OleDbType.VarChar, 50).Value = txtUsername.Text
perintah.Parameters.Add("@password", OleDbType.VarChar, 50).Value = txtPassword.Text