首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InvalidOperationException焦化

InvalidOperationException焦化
EN

Stack Overflow用户
提问于 2016-01-02 01:43:58
回答 1查看 41关注 0票数 0

我试图访问MySql数据库,但得到了以下错误:

引发的异常:“System.InvalidOperationException”在MySql.Data.dll中 附加信息:尚未正确初始化CommandText属性。

,这将是我的代码

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2016-01-02 01:52:23

正如错误说明的那样,您从未设置MySqlCommand对象的MySqlCommand属性。您已经定义了一个SELECT查询,但是永远不会在任何地方使用它。在尝试使用该对象之前,将其设置在命令对象上:

代码语言:javascript
复制
mycommand.CommandText = sqlquery

注意:要注意,您的代码非常容易受到SQL注入攻击的攻击。您应该使用查询参数而不是直接执行用户输入作为代码。基本上,您允许用户在数据库上执行他们想要的任何代码。

还:您要用纯文本存储用户密码的。对于用户来说,这是极其不负责任的。如果你能读取他们的密码,攻击者也可以。用户密码应该用单向哈希来隐藏,这样它们就永远不能被读取,即使是作为系统所有者的你也不能读取。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34561800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档