好吧,我之前发布了这个问题,但只得到了我需要的一半答案。简单地说,我有一个应用程序,它将存储在My SQL数据库中的登录凭据进行检查。我听到的尴尬问题是,我已经以最适合自己的方式创建了它,并且以一种对我来说很简单的方式来理解 - 我没有经验过编程和自学。我使用的方法 - 虽然容易发生“注入式攻击”等这样的危险,是适合我的应用程序,显然还有安全在我的应用(CD-重点检查&密码。)VB应用程序搜索MySQL数据库的登录凭证
所以,实际的细节:
连接建立成功,我可以操纵应用程序中的数据。
连接代码:
Public Sub conecDB()
'This is called upon program start.
Dim connectionString As String = SQLLoginIn.serveriptxt.Text 'This is the server IP/Server name. If server is intalled on your local machine, your IP should be 127.0.0.1 or you may use localhost
Dim strDbase As String = SQLLoginIn.databasenametxt.Text 'Database name
Dim strUser As String = SQLLoginIn.databaseusertxt.Text 'Database user
Dim strPass As String = "CENSORED" 'Database password
If connDB.State <> ConnectionState.Open Then connDB.ConnectionString = "Data Source=" & connectionString.Trim & ";Initial Catalog=" & strDbase.Trim & ";MultipleActiveResultSets=False;User ID=" & strUser.Trim & ";Password=" & strPass
If connDB.State <> ConnectionState.Open Then connDB.Open()
End Sub
那什么,我需要做的伟大工程。
我(一个单独的表)的记录添加到我的程序列表视图称为lvRec
代码:
Public Sub dispRec(ByVal PstrSQL As String)
'This is called once the connection is established.
frmMain.lvRec.Items.Clear()
With comDB
.CommandText = PstrSQL
rdDB = .ExecuteReader
End With
Do While rdDB.Read
Item = frmMain.lvRec.Items.Add(rdDB!Members_ID.ToString)
Item.SubItems.Add(rdDB!Gamer_Tag.ToString.Trim)
'And a bunch of more
Item.SubItems.Add(rdDB!Games_Owned.ToString.Trim)
My.Application.DoEvents()
Loop
rdDB.Close()
End Sub
所以,现在你已经看到了我如何使用SQL的你'可能会尖叫“这不是你怎么做的!”,但正如我所说,它适用于我:)当我想用自己的用户名来变化用户时发生问题&存储在另一个表上的密码被称为Logins
。
我知道我需要/可以使用下面的代码来查询用Logins
表中的登录凭据的用户输入,但我不知道如何返回任何可用的结果或布尔结果类似。我只是想知道用户输入的凭证是否正确,因此对于它存在的TRUE会很好。
SQL查询:
SQL = "Select * from logins " & _
"where Name like '%" & Me.Usernametxt.Text.Trim & _
"%' AND Passkey LIKE '" & Me.Passwordtxt.Text.Trim & "'"
我知道这是这样一个简单的问题,很多的细节,但我需要的人了解我解决这个去的方式。任何帮助将非常感激。
不要使用'LIKE',除非你真的需要模糊匹配 - 而且绝对不要使用密码 - 你知道输入密码'%'可以用于任何帐户,对吗?另外,虽然我明白你想要以“你的方式”来做,而且每个人都有自己的风格,但这不是做错事的借口。如果您不关心安全性,请彻底取消密码。如果你关心一点,这是不够的。 – Basic
@Basic我回顾了我的做法并得出结论,这很糟糕。我现在正在学习和实施正确的方式;无论如何,这对我来说会更容易。感谢您指出'%'问题,我不知道这一点。 – user2980316
我写了一些评论,指出你的方向是正确的,但决定一个非答案可能会更有帮助。见下文。 – Basic