因此,我试图通过文本框和密码存储为字符串(用户输入他们的密码到文本框中输入用户名输入的用户名搜索我的数据库,一些操作是为了加密而完成的,然后加密的密码被存储为一个字符串;这个字符串就是我用来搜索数据库的地方,因为数据库中存有加密的密码)基于文本框和字符串在数据库中搜索的查询
该命令适用于通过文本框输入用户名字符串,但是当我直接使用派生密码字符串时,它不起作用。我想在下面的代码行语法错误是给麻烦:
Dim cmd As OleDbCommand = New OleDbCommand
("SELECT * FROM UserInfo
WHERE [User ID] = '" & txtLoginID.Text & "'
AND [EncryptedPassword] = '" & EncPasswordString & "' ", con)
EncPasswordString是存储通过各种行动中取得的加密密码字符串。我需要将此字符串与数据库中的EncryptedPassword进行比较。谢谢!
这是我一直在使用以获得EncPasswordSting什么:
i = 0
While (PLength > 0)
charofP = sHex(i)
ascvalue = Strings.Asc(chartest)
decvalue = Convert.ToDecimal(ascvalue)
shiftdecvalue = decvalue + 1
asctochar = ChrW(shiftdecvalue)
emptychararray(i) = asc
i = i + 1
PLength = PLength - 1
End While
EncPasswordString = Convert.ToString(emptychararray)
不要将SQL字符串干扰到OldDBCommand中,而是将其设置为字符串变量。在运行时构建它时,您将能够在调试器中获取该值。尝试将生成的SQL字符串粘贴到SQL窗口中...并从此处进行调试。 –
我会尝试,但我真的很想编辑上面给出的行。 – user2016082
“不起作用”是一个不好的诊断。你得到的错误是什么?如果你只是得到一个空白的结果集,那么它不是一个语法错误。此外,Sql注入是坏的,等等等等等等。如果你不知道它是什么,请查看并相应地修复你的代码。 –