2017-12-10 3 views
1

Ich habe gerade diesen Fehler in meiner Funktion. Der Fall ist, dass ich eine SMS an jeden der Kunden senden muss, deren Zeitplan in der gegenwärtigen Zeit abgelaufen ist, also habe ich eine SQL-Abfrage, um den Eintrag mit laufendem Zeitplan auszuwählen und für jeden Eintrag den SQL Data Reader (READER) gelesen zu haben , Es wird meinen SMS-Code ausführen. Aber ich bekomme diesen Fehler.Ungültiger Leseversuch, wenn Reader geschlossen ist (VB.Net)

Hier ist mein Code:

Public Function onschedule() 
    MysqlConn.ConnectionString = ServerString 

    Dim READER As MySqlDataReader 
    Dim mobileNum, customername, datestart, msg As String 

    Try 
     MysqlConn.Open() 
     Dim query As String 

     query = "SELECT DATE_FORMAT(ratedemand_datestart, '%M %d, %Y') as 'Date Start',ratedemand_contact as 'Contact Number',sales_customername as 'Customer Name' FROM bnb.ratedemand WHERE ratedemand_status = 'Reserved' AND NOW() = ratedemand_datestart AND rate_category='Billiard'" 
     COMMAND = New MySqlCommand(query, MysqlConn) 
     READER = COMMAND.ExecuteReader 

     While READER.Read 
      mobileNum = READER.GetString("Contact Number") '09856994598' 
      datestart = READER.GetString("Date Start")  'November 2, 2017 12:00 AM' 
      customername = READER.GetString("Customer Name") 'Bruce R. Wayne' 

      'SMS Code Starts Here' 

      If SerialPort.IsOpen Then 
       SerialPort.Close() 
      End If 

      msg = customername + ", this is an automated text from Sta. Lucia East Grand Mall Billiard Hall confirming your 'Billiard Schedule' on " + datestart + " (Right Now). We are reminding you that if you are 20 minutes behind your schedule. It will be automatically cancelled." 

      SerialPort.PortName = "COM4" 
      SerialPort.BaudRate = 9600 
      SerialPort.Parity = Parity.None 
      SerialPort.StopBits = StopBits.One 
      SerialPort.DataBits = 8 
      SerialPort.Handshake = Handshake.RequestToSend 
      SerialPort.DtrEnable = True 
      SerialPort.RtsEnable = True 
      SerialPort.NewLine = vbCrLf 
      SerialPort.Open() 

      If SerialPort.IsOpen() Then 
       SerialPort.Write("AT" & vbCrLf) 
       SerialPort.Write("AT+CMGF=1" & vbCrLf) 
       SerialPort.Write("AT+CMGS=" & Chr(34) & mobileNum & Chr(34) & vbCrLf) 
       SerialPort.Write("Message: " & msg & Chr(26)) 
      Else 
       MetroMessageBox.Show(Admin_Menu, "Port not Available", "System Information", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) 
      End If 
     End While 

     MysqlConn.Close() 

    Catch ex As Exception 
     MsgBox(ex.Message) 
    Finally 
     MysqlConn.Dispose() 
    End Try 

    Return True 
End Function 

Antwort

0

Dont die Notwendigkeit zum Schließen der Leser unterschätzen :)

Try 
    While Reader.Read() 
    ... 
    End While 
Finally 
    Reader.Close 
    MysqlConn.Close() 
End Try 
+0

Darf ich fragen, warum mein Fehler ein Reader beheben nicht schließen, die Reader lesen ungültig erklärt, wenn ist geschlossen? Ich bekomme nicht so viele Leser –

+0

Ich habe keine Ahnung. Hab nur in Dokumenten nachgesehen. – michelek

Verwandte Themen