1

我有一个通过 ODBC 连接到的访问数据库设置,访问文件已经构建了所有必需的查询,我很想从我的应用程序中调用它们。

我正在使用 Visual Basic .NET,这是我迄今为止尝试过的......

提前感谢您提供的任何帮助。

        Dim command As OdbcCommand = New OdbcCommand

    command.Connection = cnx
    command.CommandText = "sp_InsertClient"
    command.CommandType = CommandType.StoredProcedure

    '//====== create ABN paramenter =============
    Dim param1 As OdbcParameter = New OdbcParameter("inABN", abn)
    param1.Direction = ParameterDirection.Input
    param1.DbType = DbType.String
    'add abn parameter
    command.Parameters.Add(param1)

   Dim dataAdapter As OdbcDataAdapter = New OdbcDataAdapter(command)

    dataAdapter.InsertCommand = command
    Try
        cnx.Open()
        dataAdapter.InsertCommand.ExecuteNonQuery()
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Error", _
                        MessageBoxButtons.OK, MessageBoxIcon.Error)
        Exit Sub
    Finally
        cnx.Close()
    End Try


    MessageBox.Show("DONE")
4

4 回答 4

0

那么,你的问题是什么?

查看上面的代码,您不需要 dataAdapter。
你可以打电话command.ExecuteNonQuery()来做这项工作。

编辑:另外,您可以将 OdbcConnection 和 OdbcCommand 包装在一个using...end using块中。

于 2009-06-25T08:11:14.080 回答
0

编辑了我的旧答案......这是错误的

根据thisthis,你做对了。

在访问中使用预构建查询的替代方法是将它们定义为访问中的存储过程。在 VB.NET 中使用 MS Access 存储过程。第 1 部分对此进行了很好的概述。

于 2009-06-28T05:41:46.113 回答
0

这是VB代码

Public Sub AddClient(ByVal abn As String, ByVal companyName As String, _
                     ByVal contactName As String, ByVal phoneNumber As String, _
                     ByVal address As String)
    'Dim command As OdbcCommand = New OdbcCommand
    Using cnx As New OdbcConnection(My.Settings.connectionString)
        Using command As New OdbcCommand
            command.Connection = cnx
            command.CommandText = "sp_InsertClient"
            command.CommandType = CommandType.StoredProcedure

            '//====== create ABN paramenter =============
            Dim param1 As OdbcParameter = New OdbcParameter("inABN", abn)
            param1.Direction = ParameterDirection.Input
            param1.DbType = DbType.String
            'add abn parameter
            command.Parameters.Add(param1)

            '//====== create CompanyName Parameter ================
            Dim param2 As OdbcParameter = New OdbcParameter("inCompanyName", companyName)
            param2.Direction = ParameterDirection.Input
            param2.DbType = DbType.String
            'add the parameter
            command.Parameters.Add(param2)

            '//======== create ContactName Param ===============
            Dim param3 As OdbcParameter = New OdbcParameter("inContactName", contactName)
            param3.Direction = ParameterDirection.Input
            param3.DbType = DbType.String
            'add the parameter
            command.Parameters.Add(param3)

            '//=========== create PhoneNumber Parameter ===============
            Dim param4 As OdbcParameter = New OdbcParameter("inPhoneNumber", phoneNumber)
            param4.Direction = ParameterDirection.Input
            param4.DbType = DbType.String
            'add paramater
            command.Parameters.Add(param4)

            '//=========== create Address Parameter ===============
            Dim param5 As OdbcParameter = New OdbcParameter("inAddress", address)
            param5.Direction = ParameterDirection.Input
            param5.DbType = DbType.String
            'add paramater
            command.Parameters.Add(param5)

            Try
                cnx.Open()
                command.ExecuteNonQuery()
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Error", _
                                MessageBoxButtons.OK, MessageBoxIcon.Error)

                Exit Sub
            End Try
        End Using
    End Using
    MessageBox.Show("DONE")
End Sub

这是我在 Access 中的查询。

INSERT INTO tblClients ( ABN, CompanyName, ContactName, PhoneNumber, Address )
VALUES ([inABN], [inCompanyName], [inContactName], [inPhoneNumber], [inAddress]);

感谢所有的帮助...

于 2009-06-25T09:55:11.437 回答
0

感谢他们的链接,我已经看过它们,但错过了添加 EXECUTE,这似乎正在让查询现在运行,但我的参数没有传递给访问查询。

我已经测试并且我的参数被添加到命令中但没有被添加到访问查询中?

我也试过 Parameters.AddWithValue("paramname", value)

但这是相同的结果

我也更改了我的查询以访问它,结果发现不需要方括号......

插入 tblClients(ABN、CompanyName、ContactName、PhoneNumber、Address)值(inABN、inCompanyName、inContactName、inPhoneNumber、inAddress)

谢谢本

于 2009-06-28T06:52:48.930 回答