Обновление базы данных с использованием ODBC - PullRequest
0 голосов
/ 15 сентября 2011

Вот мой саб для обновления базы данных с использованием ODBC:

Public Sub UpdateDatabase(ByVal sql As String, ByVal parameters() As OdbcParameter)
    Dim connectionString As String = "dsn=" & ODBC & ";uid=" & UID & ";pwd="

    Try
        Using conn As OdbcConnection = New OdbcConnection(connectionString)
            Dim adapter As New OdbcDataAdapter(sql, conn)

            For Each parameter As OdbcParameter In parameters
                adapter.InsertCommand.Parameters.Add(parameter)
            Next

            conn.Open()

            adapter.InsertCommand.ExecuteNonQuery()
        End Using
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

Вот пример, вызывающий его с пустыми параметрами:

            Dim query As String = "INSERT INTO F_ARTICLE (AR_Ref) VALUES ('test')"
            Dim parameters As OdbcParameter() =
            {
            }
            UpdateDatabase(query, parameters)

Но показано следующее исключение:

NullReferenceException: Object reference not set to an instance of an object

Что, кажется, вызвано этим:

adapter.InsertCommand.ExecuteNonQuery()

Есть идеи, что я тут не так делаю?

1 Ответ

1 голос
/ 30 сентября 2011

Я до сих пор не знаю, почему предыдущий саб не сработал, но вот как я решил:

Public Sub UpdateDatabase(ByVal query As String, ByVal parameters() As OdbcParameter)
    Dim connectionString As String = "dsn=" & ODBC & ";uid=" & UID & ";pwd="

    Try
        Using conn As OdbcConnection = New OdbcConnection(connectionString)
            Using command As New OdbcCommand(query, conn)

                For Each parameter As OdbcParameter In parameters
                    command.Parameters.Add(parameter)
                Next

                conn.Open()

                command.ExecuteNonQuery()
            End Using
        End Using
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub
...