我正在开发一个我打算使用Usernames& amp;存储在MS SQL Server上的密码。我已经尝试了很多天来让Visual Basics将两个文本框中输入的文本与SQL数据库上的用户名和密码进行比较,但我无法找到一种方法。已经建立了与数据库的连接,我可以从我的应用程序中操作服务器上的数据,但我无法找出“比较”凭据的代码。
我要连接的数据库名为Members_Details
,表名为Logins
。登录表只包含两列Name
& Passkey
(用户名和密码。)
到目前为止我尝试过的是:
SQL = "Select * from logins " & _
"where Name like '%" & Me.Usernametxt.Text.Trim & "%' AND Passkey LIKE Me.Passwordtxt.Text.Trim & "%'"
但我不知道在那之后去哪里:/
任何帮助都将不胜感激,请不要担心安全问题。
答案 0 :(得分:0)
问题是由在sql文本中嵌入Passwordtxt文本框值引起的。
SQL = "Select * from logins " & _
"where Name like '%" & Me.Usernametxt.Text.Trim & _
"%' AND Passkey LIKE '" & Me.Passwordtxt.Text.Trim & "'"
但是,如果您不想要有关安全性的建议,请向前迈出一小步并写下
SQL = "Select * from logins " & _
"where Name like @uname " & _
"AND Passkey = @pass"
Dim sqlCommand = new SqlCommand(SQL, con)
sqlCommand.Parameters.AddWithValue("@uname", "%" & Me.Usernametxt.Text.Trim & "%")
sqlCommand.Parameters.AddWithValue("@pass", Me.Passwordtxt.Text.Trim )
Using reader = cmd.ExecuteReader()
if reader.HasRows Then
' user authenticated
此外,通常,密码需要准确输入(区分大小写),因此不能使用LIKE运算符和通配符检索。
通配符对于用户名也有点奇怪,但可以使用LIKE运算符来允许用户名不区分大小写