2013-02-21 45 views
0

當我在我的程序運行此功能連接屬性尚未設置或爲空

For RepeatBooking = 1 To 51 
     dateConvertedDateToBook = dateDateToBook.Date 
     dateDateToBook = dateDateToBook.AddDays(7) 
     strDateToBook = dateConvertedDateToBook.ToString("yyyy-MM-dd") 

     Try 
      Dim command As MySqlCommand = New MySqlCommand 
      Dim sqlQuery As String = "INSERT INTO bookings SET Date=" & "'" & strDateToBook & "',RoomID='" & strComputerRoomToBook & "',Length='" & intNewBookingLength & "',Period='" & intNewStartPeriod & "',UserID='" & intid & "'" 
      Dim reader As MySqlDataReader 
      SQLConnection.Open() 
      command.CommandText = sqlQuery 
      command.Connection = SQLConnection 
      reader = command.ExecuteReader 
      SQLConnection.Close() 
     Catch excep As Exception 
      MsgBox(excep.ToString) 
     End Try 

    Next 

我得到一個錯誤說「連接屬性尚未設置或爲空」 我怎樣才能得到擺脫這個?

它去除了當它到達SQLconnection.Open() 我創建的模塊的頂部像這樣的ServerString和MySQL連接:

Dim ServerString As String = "Server=localhost;User Id=root;Password=**********;Database=rooms" 
Dim SQLConnection As MySqlConnection = New MySqlConnection 
+1

哪條線你得到異常?你可以在你聲明並初始化'SQLConnection'的地方顯示你的代碼嗎? – 2013-02-21 13:35:09

+0

不要連接sql-strings,但使用參數,不要使用'string'作爲'date',使用'using'語句(或'Try-Catch-Finally')來確保你的連接被關閉。 – 2013-02-21 13:42:10

+0

我已更新我的代碼 – 2013-02-21 15:24:29

回答

0

您正在打開沒有它的性能的連接
它應該是,

Dim SQLConnection As New MySqlConnection(ServerString) 
SQLConnection.Open 

另外,您可能希望使用USING功能,使您的連接是否正確關閉。
看來你只是插入一堆值到你的數據庫,並沒有檢索任何東西,爲什麼你使用DataReader?
您的代碼應該是這樣的:

Using SQLConnection = New MySqlConnection(ServerString) 
    SQLConnection.Open 'You should open a connection only once 
    For RepeatBooking = 1 To 51 
     dateConvertedDateToBook = dateDateToBook.Date 
     dateDateToBook = dateDateToBook.AddDays(7) 
     strDateToBook = dateConvertedDateToBook.ToString("yyyy-MM-dd") 
     Try 
      Dim sqlQuery As String = "INSERT INTO bookings SET " & _ 
       "Date='" & strDateToBook & "'," & _ 
       "RoomID='" & strComputerRoomToBook & "', " & _ 
       "Length='" & intNewBookingLength & "', " & _ 
       "Period='" & intNewStartPeriod & "', " & _ 
       "UserID='" & intid & "'" 
      Dim command = New MySqlCommand(sqlQuery, SQLConnection) 
      command.ExecuteNonQuery 
     Catch excep As Exception 
      MsgBox(excep.Message) 
     End Try 
    Next 
End Using 

此外,您可能要更改如何將值傳遞到一個參數。這將防止SQL注入。

相關問題