【问题标题】:Create an SQL database programmatically c#以编程方式创建 SQL 数据库 C#
【发布时间】:2012-03-30 12:52:25
【问题描述】:

是否可以在 C# 中以编程方式创建 SQLite 数据库 - 通过编码。

我使用 XML 来存储我在应用程序中需要的信息,但它已经到了从 XML 读取的数据量使得应用程序的性能受到影响的阶段。

据我了解,可以使用提供的 System.data.Sqlite 功能更快地读取和添加 SQLite 数据库。

这对吗?

[编辑] 此外,我应该提到我正在使用 Monodevelop 在统一 3d 中完成所有这些工作。

【问题讨论】:

  • 为什么选择 SQLite 而不是 SQL CE 或 SQL Server Express?为什么是编程方式?
  • 以编程方式,因为用户需要能够通过应用程序 GUI 创建和添加。 SQLite,因为这是我在寻找 XML 的替代方案时遇到的。您推荐其他选择之一吗?
  • SQL CE 是免费的,非常轻量级,并且受到 MS 的支持。一些系统,如 Umbraco,将其用作后端数据库。创建数据库就像使用 SQLite 一样简单。

标签: c# xml sqlite monodevelop unity3d


【解决方案1】:

我相信您甚至不需要显式创建一个 SQLite 数据库来使用它,只需将其名称放在连接字符串中,当您在其中创建表时它会自动创建。

【讨论】:

  • 我明白了,在尝试此操作时,我被告知我正在使用无效的连接字符串。我试过谷歌搜索,但似乎没有任何效果。你能建议吗?
  • 修复了它。 Unity 没有正确链接,所以将我需要的 dll 文件复制到资产文件夹中。
  • 如果你想对 .NET Framework 技术有很好的支持,和一个轻量级的 DB,并且习惯于 T-SQL,使用 SSMS 管理 DB,使用 Linq To SQL 或 Entity Framework 等技术,你应该使用 SQL CE。如果你想要一个 MS 不太支持的数据库,你需要找到管理和使用这些技术的工具,然后使用 SQLite。
  • @JotaBe,我认为他无法在 Unity3d 运行的任何地方运行 SQL CE...
  • 根据他的新编辑,他当然不能使用 SQL CE,因为它不是托管代码,而是本机代码。在这种情况下,SQLite 是要走的路。
【解决方案2】:

您可以在实体框架中使用代码优先功能:支持 4.0 的提供程序还添加了 DeleteDatabase/CreateDatabase/DatabaseExists 功能。

更多信息请访问:

http://blogs.msdn.com/b/adonet/archive/2010/12/14/ef-feature-ctp5-code-first-walkthrough.aspx

【讨论】:

    【解决方案3】:

    使用 SQL Server CE。

    你可以像这样创建一个数据库文件:

    Create a SQL Server Compact Edition Database with C#

    我会使用它,因为它是“官方”MS 数据库。所以它可以很好地与 MS 技术(Linq to SQL、Entity 框架等)一起工作。它也是一个非常轻量级的数据库。考虑到还有可用的 SQL Server Express,但这不是一个轻量级的数据库。

    创建数据库的代码:

      string connectionString;
      string fileName = “ArcaneCode.sdf”;
      string password = “arcanecode”;
    
      connectionString = string.Format(
        “DataSource=\”{0}\”; Password=’{1}’”, fileName, password);
    
      SqlCeEngine en = new SqlCeEngine(connectionString);
      en.CreateDatabase();
    

    分发它只需要复制一些小程序集(例如SQL Server CE 2005 的安装程序,它是一个 1.7Mb .msi 文件,导致 7 个程序集)零配置。还有一些版本可以与 .NET framework 2.0、3.0、3.5、4.0 一起使用(版本 SQL Server 2005 到 SQL CE 4.0)。

    如果有人看不到被 MS 支持的好处,那么将它与 C# 和其他 MS 技术一起使用,并在 MSDN 上有一个很好的文档。

    我想我之所以投反对票是因为有人对 MS 过敏。如果没有,请告诉我原因。

    【讨论】:

    • OP 要求创建 SQLite 数据库,而不是 MS SQL CE 数据库。使用 sqlite 甚至可能是与其他程序互操作性的要求,或者在 OSX/Linux 等上使用它时唯一可行的选择。
    • 题主询问创建“SQL数据库”的方法。完全通用的问题。 OP 建议使用 SQLite 作为解决方案,但 SQL Server CE 是一个很好的、轻量级且易于使用的选项,直到他补充说他正在使用 Monodevelop。所以,好吧,在他对问题进行编辑后,答案不再适用,但这个答案的内容仍然适用于标题、原始问题,并且得到了很好的解释和有效的解决方案。无论如何,这是我的意见,你可以用你的反对票做任何你想做的事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 2019-08-10
    • 2021-02-04
    相关资源
    最近更新 更多