可以使用 OLEDB 在 C# 中创建数据库吗?

Posted

技术标签:

【中文标题】可以使用 OLEDB 在 C# 中创建数据库吗?【英文标题】:Can a database be created in C# using OLEDB and nothing else? 【发布时间】:2016-10-06 17:05:21 【问题描述】:

我一直在以编程方式使用 OLEDB(Visual Studio 中没有引用,只是通过代码访问与程序位于同一文件夹中的数据库)来访问和修改 Visual Basic 中的 Microsoft Access 数据库。我一直确保我的程序已经创建并打包了任何所需的数据库,但是我一直在将我的一些 VB 程序移植到 C# 并且想知道如果数据库丢失或是否可以创建数据库文件已删除。

我看过一些关于使用向 Microsoft ADO Ext 添加 COM 引用的教程。 X.X 用于 DLL 和 SecurityADOX,但我想知道是否有办法使用 OLEDB 创建并实例化数据库。

类似于检查数据库是否存在的东西

if (!File.Exists("Database.accdb"))

然后一些代码不是 ADOX 的 Catalog.Create(我也见过 CatalogClass.Create),而是一个 OLEDB 等价物,如果有的话。

我已经阅读了几个 Stack Overflow 问题,其中all say 使用 ADOX。甚至Microsoft's tutorials 也涉及到 ADOX。

如果这是最好的课程,我完全愿意添加 ADOX 并且仍然使用 OLEDB,或者如果它更快/更高效,我什至会切换到 SQLite,但我只是想问是否有仅 OLEDB 的方法。

【问题讨论】:

您链接到的问题之一中接受的答案是 “最简单的答案是在您的程序中嵌入一个空的 .mdb / .accdb 文件并将其写入磁盘。 i>" 微软有一个great tutorial 来说明如何做到这一点。这是一个很好的解决方案。但是,问题是:有没有一种方法可以创建一个仅使用 OLEDB 不存在的数据库文件?基于我使用谷歌找到的答案的缺乏,这个问题的答案是否定的,但我还是想问。感谢您抽出宝贵时间发表此评论。 【参考方案1】:
public void CreateAccessdatabase()
    
        try
        
            ADOX.Catalog cat = new ADOX.Catalog();
            cat.Create("Provider = Microsoft.ACE.OLEDB.12.0;Data Source=" + SaveDialogTargetFile.FileName + ";;Jet OLEDB:Engine Type=5;");
            cat = null;

            TxtDatabaseFile.Text = SaveDialogTargetFile.FileName;

            string CreatedDatabaseFileName = Path.GetFileNameWithoutExtension(SaveDialogTargetFile.FileName);
            TreeViewDatabaseScheme.Nodes.Add(CreatedDatabaseFileName);
            MessageBox.Show("Databasefile succesfully created");

        
        catch (Exception)
        
            MessageBox.Show("Failed to create new databasefile");
        
    

【讨论】:

我使用它来创建数据库,可能无法完全响应您的要求。我目前正在编写代码以从代码创建新表

以上是关于可以使用 OLEDB 在 C# 中创建数据库吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 2010 C# 中创建具有截止期的报表

ORA-01008 错误 - 使用 OleDb 将记录插入 Oracle DB

如何使用 oledb 在 c# 中将下拉列数据插入到 excel 中

在 C# (WP7) 中创建音频文件

是否可以在 C# 2.0 中创建发光效果?

有没有一种简单的方法可以在 C# 中创建序数?