【问题标题】:Getting error for Data Reader in vb.net在 vb.net 中获取数据读取器错误
【发布时间】:2014-03-31 19:30:32
【问题描述】:

在 vb.net 中执行数据读取器命令时遇到错误。它抛出处理。此字段就像您在文本框中输入员工 ID 时一样,然后它将在数据库中捕获其他字段名称,部门。

这是我的代码

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load

Dim conn As New MySql.Data.MySqlClient.MySqlConnection

Dim strConnectionString As String =ConfigurationManager.ConnectionStrings("testConnectionString").ConnectionString

Dim sqlQuery As String = "SELECT * hr_record WHERE Emplid='" & txt1.Text & "'"

Using sqlConn As New MySqlConnection(strConnectionString)

      Using sqlComm As New MySqlCommand()

      With sqlComm

        .CommandText = sqlQuery

          End With

              Try
                  sqlConn.Open()

                    Dim sqlReader As MySqlDataReader = sqlComm.ExecuteReader()

                    While sqlReader.Read()

                        txt1.Text = sqlReader("Emplid").ToString()

                        TextBox1.Text = sqlReader("Nama").ToString()

                        TextBox2.Text = sqlReader("DeptDesc").ToString()

                    End While

                Catch ex As MySqlException

                    MessageBox.Show(ex.Message)
                End Try

            End Using

        End Using

    End Sub

【问题讨论】:

  • 你得到什么错误?
  • @Arion 我收到错误“连接必须有效且打开。”在 'Dim sqlReader As MySqlDataReader = sqlComm.ExecuteReader()' 行处
  • 您的查询不应该是SELECT * FROM hr_record...吗?
  • 尝试将此代码移动到单独的函数中。
  • @shree.pat18 tq 我已经改变它但没有功能

标签: asp.net vb.net mysqldatareader


【解决方案1】:

尝试更改您的选择查询,例如

Dim sqlQuery As String = "SELECT * from hr_record WHERE Emplid='" & txt1.Text & "'"

注意:- 不能在 Page_Load 中使用类似的代码。尝试创建一个函数并从 Page_Load 调用该函数并始终使用 Parameterized query

更新答案:

Page_Load

 Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
 DataBind()
 End Sub

外部方法:

Public Sub DataBind()
Dim sConnection As String = "server=(local);uid=sa;pwd=PassWord;database=DatabaseName"
    Using Con As New MySqlConnection(sConnection)
        Con.Open()
        Using Com As New MySqlCommand("SELECT * from hr_record WHERE Emplid='"txt1.Text
        "'", Con)
            Using RDR = Com.ExecuteReader()
                If RDR.HasRows Then
                    Do While RDR.Read
                    txt1.Text = RDR.Item("Emplid").ToString()
                    TextBox1.Text = RDR.Item("Nama").ToString()
                    TextBox2.Text = RDR.Item("DeptDesc").ToString()
                    Loop
                End If
            End Using
        End Using
        Con.Close()
    End Using
End Sub

注意:尝试像这样实现您的逻辑,并根据您的要求进行修改。

希望它有效。

【讨论】:

  • 我只是覆盖了代码,但仍然有同样的错误。顺便说一句我应该怎么做?? icant 在页面加载中写入?所以我必须写它的正确位置在哪里。
  • 您需要将Page_Load 代码绑定到一个方法/函数中,并从Page_Load..调用该方法/函数,并将您的连接和查询传递给MySqlCommand...跨度>
  • 我已经完成了你告诉我的事情,但现在看起来没有错误,但当我输入 ID 时它不起作用,另一个字段没有填充数据库中的数据。
  • 在页面加载时检查 txt1.Text 的值
【解决方案2】:

您尝试在页面加载中获取 Emplid,但您仍然应该使用按钮检查 Emplid 是否存在

【讨论】:

    【解决方案3】:

    感谢所有感谢帮助我..最后这段代码它工作感谢所有。 这个代码将是函数

     Dim conn As New MySql.Data.MySqlClient.MySqlConnection
    
     Dim strConnectionString As String = ConfigurationManager.ConnectionStrings("testConnectionString").ConnectionString
    
    
        Using sqlConn As New MySqlConnection(strConnectionString)
            sqlConn.Open()
            Using sqlComm As New MySqlCommand()
    
                sqlComm.Connection = sqlConn
                With sqlComm
    
    
                    .CommandText = "SELECT * from hr_record WHERE Emplid='" & txt1.Text & "'"
    
    
                End With
    
                Try
    
    
                    Dim sqlReader As MySqlDataReader = sqlComm.ExecuteReader()
    
                    While sqlReader.Read()
    
                        txt1.Text = sqlReader("Emplid").ToString()
    
                        TextBox1.Text = sqlReader("Nama").ToString()
    
                        txtdep.Text = sqlReader("DeptDesc").ToString()
    
                    End While
    
                Catch ex As MySqlException
    
                    MessageBox.Show(ex.Message)
                End Try
                sqlConn.Close()
            End Using
    
        End Using
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多