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

私のプログラムで、「接続プロパティが設定されていないか、null です」というエラーが表示されます。これを取り除くにはどうすればよいですか?

SQLconnection.Open() に到達すると例外になります。次のように、モジュールの上部に ServerString と MySQL 接続を作成しました。

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

1 に答える 1

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 インジェクションが防止されます。

于 2013-02-21T16:56:12.357 に答える