从VB .NET使用Access 2007查询

时间:2009-06-25 07:38:48

标签: vb.net ms-access-2007

我有一个访问数据库设置,我通过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 个答案:

答案 0 :(得分:0)

那么,你的问题是什么?

查看上面的代码,您不需要dataAdapter 您可以致电command.ExecuteNonQuery()来完成工作。

编辑:此外,你可以包装OdbcConnection& OdbcCommand在using...end using块中。

答案 1 :(得分: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]);

感谢所有帮助...

答案 2 :(得分:0)

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

根据thisthis,你做得对。

在访问中使用预构建查询的另一种方法是将它们定义为访问中的存储过程。 Working with MS Access Stored Procedures in VB.NET. Part 1是对此的一个很好的概述。

答案 3 :(得分:0)

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

我已经过测试,我的参数已添加到命令中,但未添加到访问查询中?

我也尝试过Parameters.AddWithValue(“paramname”,value)

但这是相同的结果

我也改变了我对查询的查询,结果显示了不需要的方括号......

  

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

由于 本