以下是代码:
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
答案 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