简体   繁体   English

使用ODBC更新数据库

[英]Update database using ODBC

Here is my sub for updating a Database using ODBC: 这是我的使用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

Here is an example calling it with empty parameters: 这是一个使用空参数调用它的示例:

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

But the following exception is shown: 但是显示以下异常:

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

Which seems to be triggered by this: 这似乎是由以下原因触发的:

adapter.InsertCommand.ExecuteNonQuery()

Any idea what am I doing wrong here? 知道我在做什么错吗?

I still don't know why the previous sub didn't work, but this is how I solved it: 我仍然不知道为什么先前的子菜单不起作用,但这是我解决的方法:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM