我试图访问MySql数据库,但得到了以下错误:
引发的异常:“System.InvalidOperationException”在MySql.Data.dll中 附加信息:尚未正确初始化CommandText属性。
,这将是我的代码
Imports MySql.Data.MySqlClient
Public Class Login
Dim cn As New MySqlConnection
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
cn.ConnectionString = "server=localhost; userid=root; password=root; database=pos"
cn.Open()
MsgBox("Connected")
End Sub
Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
cn.Close()
Dim myadapter As New MySqlDataAdapter
Dim sqlquery = "SELECT * from pos.values where username='" & txtUsername.Text & "' AND password='" & txtPassword.Text & "'"
Dim mycommand As New MySqlCommand
mycommand.Connection = cn
cn.Open()
myadapter.SelectCommand = mycommand
Dim mydata As MySqlDataReader
mydata = mycommand.ExecuteReader
If mydata.HasRows = 0 Then
Beep()
MsgBox(txtUsername.Text & " Invalid")
Else
MsgBox("Welcome " & txtUsername.Text)
MainWindow.Show()
Me.Hide()
cn.Close()
End If
End Sub
End Class发布于 2016-01-02 01:52:23
正如错误说明的那样,您从未设置MySqlCommand对象的MySqlCommand属性。您已经定义了一个SELECT查询,但是永远不会在任何地方使用它。在尝试使用该对象之前,将其设置在命令对象上:
mycommand.CommandText = sqlquery注意:要注意,您的代码非常容易受到SQL注入攻击的攻击。您应该使用查询参数而不是直接执行用户输入作为代码。基本上,您允许用户在数据库上执行他们想要的任何代码。
还:您要用纯文本存储用户密码的。对于用户来说,这是极其不负责任的。如果你能读取他们的密码,攻击者也可以。用户密码应该用单向哈希来隐藏,这样它们就永远不能被读取,即使是作为系统所有者的你也不能读取。
https://stackoverflow.com/questions/34561800
复制相似问题