我正在开发一个应用程序,打算使用存储在 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 & "%'"
但我不知道之后该去哪里:/
如有任何帮助,我们将不胜感激,但目前安全性不是问题。
最佳答案
该问题是由 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 运算符允许用户名不区分大小写是可以接受的
关于mysql - SQL 应用程序用户名和密码检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21194389/