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

Gre*_*reg 5 c# sqlite winforms

想要在我的VS2008中构建的WinForms应用程序中尝试使用sqlite,我会很高兴.

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

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

    DbProviderFactory fact = DbProviderFactories.GetFactory("System.Data.SQLite");
    using (DbConnection cnn = fact.CreateConnection())
    {
      cnn.ConnectionString = "Data Source=test.db3";
      cnn.Open();
    }
    
    Run Code Online (Sandbox Code Playgroud)
  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();
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 我该如何设置数据库表?我会这样做并将其作为模板存储在我的VS2008项目中吗?或者我想在代码中自动创建数据库(如果不存在)?

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

谢谢

Fra*_*nov 4

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

  2. 数据库在连接字符串中指定。在本例中,它位于应用程序工作文件夹中的 test.db3 文件中。

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

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

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