vb.net MS Access将行从一个数据库插入另一个数据库

时间:2011-09-19 08:56:27

标签: vb.net ms-access

我正在尝试将行从一个db导入到另一个db,基本上它与此SQL有关:

SELECT * INTO [MSAccess;DATABASE=C:\MainDB.mdb;].[Header]  FROM [Header] WHERE ID=9

因为它返回此错误:找不到可安装的ISAM。

有什么想法吗?为了帮助解释我添加了我的代码:

Dim sSQL As String
Dim iCertMainNo As Integer
Dim cnLocal As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & App_Path() & "LocalDB.mdb;")
Dim cnMain As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & My.Settings.MainDB & ";")

cnLocal.Open()
cnMain.Open()

Dim cmd As New System.Data.OleDb.OleDbCommand("SELECT * INTO [MSAccess;DATABASE=" & My.Settings.MainDB & ";].[tblCertHeader] FROM tblCertHeader WHERE ID = " & iCertNo, cnLocal)
cmd.ExecuteNonQuery()



cnMain.Close()
cnLocal.Close()

我认为它要么按照上面列出的方式进行。或者打开两个连接从本地获取一行然后将其插入到cnMain中 - 但是再次不确定如何在不列出所有字段的情况下执行此操作...我可以只是简单地插入行吗?

1 个答案:

答案 0 :(得分:1)

它似乎是从一个MS Access数据库运行到另一个,因此连接字符串更简单:

SELECT * INTO [;DATABASE=C:\MainDB.mdb;].[Header]  FROM [Header] WHERE ID=9

BTW如果这是真正的路径,可能无法更新C:\中的数据库。

编辑我测试了这个:

''Dim sSQL As String
''Dim iCertMainNo As Integer
Dim cnLocal As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Docs\dbFrom.mdb;")
''Dim cnMain As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & My.Settings.MainDB & ";")

cnLocal.Open()
''cnMain.Open()

Dim cmd As New System.Data.OleDb.OleDbCommand("SELECT * INTO [;DATABASE=C:\Docs\DBTo.mdb;].[Header] FROM Header WHERE ID = 2", cnLocal)
cmd.ExecuteNonQuery()



''cnMain.Close()
cnLocal.Close()

它对我来说很好。我评论了iCertMainNo,因为你没有使用它。您的字符串仅包含iCertNo,我使用实际值进行测试。我没有看到任何两个连接的原因。