c# - 在 C# winforms 应用程序中使用 SQLite - 一些基本问题?

标签 c# winforms sqlite

如果我能在 VS2008 中构建的 WinForms 应用程序中尝试使用 sqlite 获得一些指导,那就太好了。

  1. 安装 - 是否只是将“System.Data.SQLite.DLL”文件放入我的 VS2008 项目中的某个文件夹中(例如,为其创建一个文件夹),然后创建对它的“引用”?我已将引用的属性 CopyGlobal = TRUE。我的想法是当我部署我的应用程序时它应该工作(例如为应用程序部署 DLL)

  2. 初始数据库 - 我是否必须创建初始数据库?我在帮助文件中看到了下面提到的代码,但它实际连接到的数据库是什么,数据库文件在哪里?

    DbProviderFactory fact = DbProviderFactories.GetFactory("System.Data.SQLite");
    using (DbConnection cnn = fact.CreateConnection())
    {
      cnn.ConnectionString = "Data Source=test.db3";
      cnn.Open();
    }
    
  3. 使用什么方法 - 这通常是我使用/调用电话的方式吗?

    DbProviderFactory fact = DbProviderFactories.GetFactory("System.Data.SQLite");
    using (DbConnection myconnection = fact.CreateConnection())
    {
      myconnection.ConnectionString = "Data Source=test.db3";
      myconnection.Open();
      SQLiteTransaction mytransaction = SQLiteTransaction)myconnection.BeginTransaction();
      SQLiteCommand mycommand = new SQLiteCommand((SQLiteConnection)myconnection);
      mycommand.CommandText = "SELECT * FROM SYSTEM";  
      mycommand.ExecuteNonQuery();
      mytransaction.Commit();
      myconnection.Close();
    }
    
  4. 我将如何设置数据库表?我会这样做并将其作为模板存储在我的 VS2008 项目中吗?或者如果数据库不存在,我是否想在代码中自动创建数据库?

  5. 如果 4 中的想法是预先设置表,我应该在哪里存储这个初始数据库文件?这样当我运行项目来测试它然后我使用数据库文件时,我正在测试的那个之后就被废弃了。我想我是在问如何确保在我的 VS2008 项目中有一个单独的空白但配置(带表)数据库作为“源”,但是当我运行/调试它时,它会获取一个副本用于测试?

谢谢

最佳答案

  1. 是的。 SQLite 是一个 xcopy 部署数据库;无需注册,您的应用只需要 dll 即可使用。

  2. 数据库在连接字符串中指定。在这种特殊情况下,它位于应用程序工作文件夹中的 test.db3 文件中。

  3. 您可能希望缓存与数据库的连接,以避免每次需要访问时都打开它的昂贵操作。另外,我不确定您为什么需要事务,因为您所做的只是从数据库中读取。

  4. 您有两个选择 - 要么将空数据库与预先创建的模式一起存储,然后在构建过程中将其复制到输出目录;要么或者创建一组 SQL 脚本,以便在第一次连接到数据库时从您的代码中对数据库执行。您选择哪一个取决于您是希望您的应用程序负责创建架构还是您的构建过程。

  5. 如果您使用预先创建的模式创建一个空数据库,您可以将它作为一个文件添加到您的源中并指示 VS 将它复制到输出目录(正如我已经提到的)。

关于c# - 在 C# winforms 应用程序中使用 SQLite - 一些基本问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1541711/

相关文章:

android - MvvmCross 与 SQLite 非常慢

c# - 防止从 azure-windows 手机下载已下载的图像

c# - 如何在不创 build 置的情况下让可执行文件在其他计算机上运行,

c# - 如何连接.Net Webservice 与本地数据库

c# - 在单选框中设置 Checked 属性时,是否可以抑制 CheckedChanged 事件?

c# - Windows 窗体 - 自定义 MaskedTextBox

Android SQlite,如何检查数据库中的值是否已经存在?

c# - System.Data.Sqlite 是否支持 Entity Framework 6?

c# - 优化复杂查询

c# - 我让 C DLL 从 C# 向 c DLL 发送参数