【问题标题】:How to create Access database from a script如何从脚本创建 Access 数据库
【发布时间】:2010-09-30 21:09:18
【问题描述】:

我想从脚本创建一个 Access 数据库。理想情况下,我会喜欢类似于可以使用 SQL 脚本创建 SQL 数据库的方式。

这可能吗?有什么东西可以利用我已经拥有的 SQL 脚本吗?我想创建与我的 SQL 数据库相同的数据库结构。

如果您需要我澄清任何事情,请告诉我。谢谢。

【问题讨论】:

  • 我没有忽略我的问题。我只是有更优先的工作项目。一旦我开始实施这个,我会选择对我有帮助的答案。

标签: database ms-access scripting creation


【解决方案1】:

我最终选择了自己的解决方案。我无法让前两个中的任何一个工作得很好。我创建了两个可执行文件:一个用于创建数据库,一个用于运行脚本。

对于创建数据库的应用程序,我添加了 COM 参考“Microsoft ADO Ext. 2.8 for DDL and Security”。代码实际上很简单:(将“test.mdb”替换为您的文件的正确文件路径。)

Dim cat As ADOX.Catalog = New ADOX.Catalog()
cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;Jet OLEDB:Engine Type=5")

为了运行脚本,我创建了一个简单的解析器来读取和运行“访问脚本”。这些脚本基于 SQL 脚本,因为它们提供了要运行的命令列表。例如,一个脚本可能被定义为:

--Create the table.
CREATE TABLE [Test] ([ID] Number, [Foo] Text(255))

--Add data to the table.
INSERT INTO [Test] ([ID], [Foo]) VALUES (1, 'Bar')

这是解析器的代码。 (将“test.mdb”替换为您的文件的正确文件路径。)

Dim textStream = File.OpenText(scriptPath)
Dim lines As List(Of String) = New List(Of String)
While textStream.Peek() <> -1
    lines.Add(textStream.ReadLine())
End While
textStream.Close()

Dim connection As OleDb.OleDbConnection = New OleDb.OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb")
connection.Open()
For Each line As String In lines
    If Not String.IsNullOrEmpty(line) Then
        If Not line.StartsWith("--") Then
            Dim dbCommand = New OleDb.OleDbCommand(line, connection)
            dbCommand.ExecuteNonQuery()
        End If
    End If
Next
connection.Close()

这个解决方案效果很好,实施起来也很简单。

【讨论】:

    【解决方案2】:

    可以通过代码创建访问数据库,可以使用 DDL 指令,也可以通过操作 ADO 或 DAO 对象。

    我怀疑 DDL T-SQL 代码对创建 Access 数据库有什么用处:从字段类型到索引和约束,很多指令在 Access 中都无法理解。

    一种选择是使用 ADODB 连接来连接到原始 SQL 数据库和新创建的 Access 数据库(请参阅#HansUp 提案),并使用 ADOX 对象模型。然后,您将能够“读取”SQL 数据库(即 ADOX 目录)及其对象,并在 Access 端重新创建具有“相似”属性的对象:表、字段、索引、关系等。

    使用 DAO 对象模型可以做类似的事情,但我想使用 ADOX 会更容易。

    另一种选择是检查现有软件是否可以解决问题。 EMS SQL 管理器是一个选项。

    【讨论】:

      猜你喜欢
      • 2014-02-23
      • 1970-01-01
      • 2019-03-22
      • 2019-06-30
      • 2018-04-25
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多