Mysql 读取前访问字段的尝试无效

Mysql 读取前访问字段的尝试无效,mysql,vb.net,visual-studio-2015,Mysql,Vb.net,Visual Studio 2015,我整个上午都在为这件事绞尽脑汁,我知道这可能是我刚刚错过的一些简单的事情。代码在dr.getstring(1)处中断。ToString行出现错误“调用Read()之前访问字段的尝试无效”。我知道SQL语句很好,它在workbench中工作正常,所以我认为它们一定是我的参数出错了,只是没有出错 Dim cs As New MySqlConnection("SERVER=10.1.1.1;Persist Security Info=True;DATABASE=db;UID=uid;Password=

我整个上午都在为这件事绞尽脑汁,我知道这可能是我刚刚错过的一些简单的事情。代码在dr.getstring(1)处中断。ToString行出现错误“调用Read()之前访问字段的尝试无效”。我知道SQL语句很好,它在workbench中工作正常,所以我认为它们一定是我的参数出错了,只是没有出错

Dim cs As New MySqlConnection("SERVER=10.1.1.1;Persist Security Info=True;DATABASE=db;UID=uid;Password=pw")
    Dim ds As String = cs.DataSource
    Dim cn As MySqlConnection = New MySqlConnection
    cn.ConnectionString = "user id=uid;password=pw!;database=db;data source=" + ds
    Dim sql As String = "SELECT a.email, b.details, b.requestor, b.id from department a, workrequest b WHERE a.name = b.department AND b.approval IS Null AND b.status != @stat"
    Dim cmd As New MySqlCommand(sql, cn)
    cmd.Parameters.Add("@stat", MySqlDbType.VarChar).Value = "Closed"
    cn.Open()
    Dim dr As MySqlDataReader
    dr = cmd.ExecuteReader

    Dim i As Integer = 0

    While dr.Read() Or i < 20
        'Dim email As String = dr.GetString(0).ToString
        Dim email As String = "test@dom.an"
        Dim details As String = dr.GetString(1).ToString
        Dim requestor As String = dr.GetString(2).ToString
        Dim workid As String = dr.GetString(3).ToString

        Try
            SendSMTP("test.dom.am", email, "Work Request Awaiting Approval", "<body><b>Work Request Number:</b> " & workid & "</br><b> Referring to: </b></br> " & details & "</br><b>Submitted By: </b> " & requestor & "</br> Is waiting for your approval.  Please go to http://test.dom.an to view and approve or deny the request</body>", "test.dom.an", "")

        Catch ex As Exception

        End Try

        i = i + 1
    End While
    Me.Close()
Dim cs作为新的MySqlConnection(“SERVER=10.1.1.1;Persist Security Info=True;DATABASE=db;UID=UID;Password=pw”)
Dim ds As String=cs.DataSource
Dim cn As MySqlConnection=新的MySqlConnection
cn.ConnectionString=“用户id=uid;密码=pw!;数据库=db;数据源=“+ds”
Dim sql As String=“选择a.email、b.details、b.requestor、b.id from department a、workrequest b,其中a.name=b.department,b.approval为Null,b.status!=@统计数据“
Dim cmd作为新的MySqlCommand(sql,cn)
cmd.Parameters.Add(“@stat”,MySqlDbType.VarChar).Value=“Closed”
cn.Open()
Dim dr作为MySqlDataReader
dr=cmd.ExecuteReader
尺寸i为整数=0
而里德博士()或我<20
'Dim email As String=dr.GetString(0).ToString
将电子邮件设置为字符串=”test@dom.an"
Dim详细信息为String=dr.GetString(1).ToString
Dim请求程序为String=dr.GetString(2).ToString
Dim workid As String=dr.GetString(3).ToString
尝试
SendSMTP(“test.dom.am”,电子邮件,“等待批准的工作请求”,“工作请求编号:&workid&“
参考:
”&details&“
提交人:”&requestor&“
正在等待您的批准。请转到http://test.dom.an 要查看、批准或拒绝请求,请执行以下操作:“test.dom.an”,” 特例 结束尝试 i=i+1 结束时 我
如果
i>20
但您的行数不足,它将崩溃。由于捕获为空,您不会知道它。我想您需要
而Read博士()还有,我想知道为什么要数到20,这很有意思。然而,这个错误强烈地暗示了你的查询没有返回任何内容。or运算符允许你的代码在循环中输入,但读卡器没有行。我有