SQL应用程序用户名&密码检查

时间:2014-01-17 19:37:05

标签: mysql vb.net

我正在开发一个我打算使用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 & "%'"

但我不知道在那之后去哪里:/

任何帮助都将不胜感激,请不要担心安全问题。

1 个答案:

答案 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运算符来允许用户名不区分大小写