65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 DTS 从其他数据库创建和填充 MS Access 文件

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.14/5 (10投票s)

2006年5月31日

CPOL

2分钟阅读

viewsIcon

92848

downloadIcon

574

一篇关于从其他数据库创建和填充自动化 MS Access 文件的文章。

Sample Image

引言

如果您正在使用 Oracle 或 SQL Server 等数据库,并且希望将数据复制到不与您的数据以任何方式链接的其他数据库,您可以使用 SQL Server 等 DTS 来实现,但促使我开发此实用程序的确切场景是“以自动化的方式完成所有操作”。我开发此应用程序是为了将我的源数据转换为 MS Access 文件格式,但同样也可以用于将任何类型的数据源转换为 MS Access。

背景

如前所述,开发此应用程序的原因是为了以自动化的方式完成所有操作。这意味着,我希望定期以自动化的方式将我的源数据转换为 MS Access。

代码

Imports System.IO
Imports System.Data.OleDb
Module Module1
    Sub Main()
        Try
            'Access DB File path
            Dim File_Path As String
            File_Path = _
             AppDomain.CurrentDomain.BaseDirectory & "db.mdb"
            'If Exists already then delete it first
            If File.Exists(File_Path) Then
                File.Delete(File_Path)
            End If
            'Connection String for New DB File
            Dim Access_ConnStr As String = _
              "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
              " Data Source=" & File_Path
            'ADOX.Catalog Object to craete new DB
            Dim Catalog As New ADOX.Catalog()
            Catalog.Create(Access_ConnStr)
            Catalog.ActiveConnection.close()
            Catalog = Nothing
            'OleDb Connection to Create New table
            Dim Access_Conn As OleDb.OleDbConnection
            Access_Conn = New OleDb.OleDbConnection(Access_ConnStr)
            Access_Conn.Open()
            Dim strSQL As String = "CREATE TABLE tblTest (" & _
            " TerritoryID                              Text(20)," & _
            " TerritoryDescription                     Text(50)," & _
            " RegionID                                 Number);"

            Dim cmd As OleDbCommand = Access_Conn.CreateCommand()
            cmd.CommandText = strSQL
            cmd.ExecuteNonQuery()
            'Set and Open Connection of the Source DB
            Dim SrcConnStr As String = "Provider=sqloledb; " & _ 
                "Data Source=(local); Initial Catalog=northwind; " & _ 
                "User Id=sa; Password=;integrated " & _ 
                "security=SSPI;persist security info=False;"
            Dim SrcConn As New OleDbConnection(SrcConnStr)
            SrcConn.Open()
            Dim srcReader As System.Data.OleDb.OleDbDataReader
            strSQL = "select * from Territories"
            Dim SrcCmd As New OleDbCommand(strSQL, SrcConn)
            'Read from Source and populate in the Access DB
            srcReader = SrcCmd.ExecuteReader()
            While srcReader.Read
                strSQL = "insert into tblTest values('" & _
                         srcReader.GetValue(0).ToString & "','" _
                         & srcReader.GetValue(1).ToString & _
                         "','" & srcReader.GetValue(2).ToString & "')"
                cmd.CommandText = strSQL
                cmd.ExecuteNonQuery()
            End While
            cmd.Dispose()
            cmd = Nothing
            Access_Conn.Close()
            Access_Conn.Dispose()
            Access_Conn.ReleaseObjectPool()
            Access_Conn = Nothing
            srcReader.Close()
            srcReader = Nothing
            SrcCmd.Dispose()
            SrcCmd = Nothing
            SrcConn.Close()
            SrcConn.Dispose()
            SrcConn = Nothing
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Module

使用演示

下载演示项目并解压缩,然后运行“DTS.exe”。它将在同一目录中生成一个 MS Access 文件“db.mdb”。如果您查看此文件,它将包含 SQL Server Northwind 数据库的所有数据。注意:要运行此演示应用程序,必须在您的计算机上安装 SQL Server。

使用代码

下载代码并在 Visual Studio .NET 中打开,然后根据您的要求进行以下更改

  • 更改“File_Path”并将其设置为您想要创建新文件的位置。
  • 根据您的源表更改第 26 行的 Create Table 命令。
  • 如果您使用的是 SQL Server 以外的数据库,请在第 36 行更改源数据库的连接字符串。
  • 更改第 41 行的源 ‘Select’ 命令。
  • 根据源表和目标表更改第 47 行的 ‘Insert’ 命令。

就这样了...

关注点

  • 该应用程序可以设计为导入多个表。
  • 可以将控制台应用程序安排为自动数据导入实用程序。
  • 该应用程序可以设计成用户只需选择数据库并单击即可导入数据的方式。

摘要

有很多用于 DTS 的工具,但这是我以自己想要的方式完成的努力;并且使用这个单一的应用程序,可以实现许多目标。所以请以您自己的方式使用它。祝您编程愉快!

© . All rights reserved.