创建SQLite数据库和表

xienkqul  于 2023-02-09  发布在  SQLite
关注(0)|答案(1)|浏览(170)

在C#应用程序代码中,我想创建一个或多个SQLite数据库,然后与之交互。
如何初始化一个新的SQLite数据库文件并打开它进行阅读?
创建数据库之后,如何执行DDL语句来创建表?

jdzmm42g

jdzmm42g1#

下一个链接将带你到一个伟大的教程,这帮了我很大的忙!
How to SQLITE in C#:我几乎使用了那篇文章中的所有内容来为我自己的C#应用程序创建SQLite数据库。

前提条件

  • 下载SQLite.dll文件
  • 或者通过手动添加SQLite DLL's
  • 或者使用NuGet
  • 将其添加为项目的引用
  • 在类的顶部使用以下行引用代码中的dll:using System.Data.SQLite;

代码示例

下面的代码创建一个数据库文件并向其中插入一条记录:

// this creates a zero-byte file
SQLiteConnection.CreateFile("MyDatabase.sqlite");

string connectionString = "Data Source=MyDatabase.sqlite;Version=3;";
SQLiteConnection m_dbConnection = new SQLiteConnection(connectionString);
m_dbConnection.Open();

// varchar will likely be handled internally as TEXT
// the (20) will be ignored
// see https://www.sqlite.org/datatype3.html#affinity_name_examples
string sql = "Create Table highscores (name varchar(20), score int)";
// you could also write sql = "CREATE TABLE IF NOT EXISTS highscores ..."
SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
command.ExecuteNonQuery();

sql = "Insert into highscores (name, score) values ('Me', 9001)";
command = new SQLiteCommand(sql, m_dbConnection);
command.ExecuteNonQuery();

m_dbConnection.Close();

在C#中创建了创建脚本后,您可能需要添加回滚事务。这将确保数据在最后作为原子操作以一大块提交到数据库,而不是以小块提交,例如,在第10次查询的第5次时可能会失败。
有关如何使用事务处理的示例:

using (TransactionScope transaction = new TransactionScope())
{
   //Insert create script here.

   // Indicates that creating the SQLiteDatabase went succesfully,
   // so the database can be committed.
   transaction.Complete();
}

第三方编辑

要读取记录,可以使用ExecuteReader()

sql = "SELECT score, name, Length(name) as Name_Length 
       FROM highscores WHERE score > 799";
command = new SQLiteCommand(sql, m_dbConnection);
SQLiteDataReader reader = command.ExecuteReader();

while(reader.Read())
{
   Console.WriteLine(reader[0].ToString()  + " " 
                  +  reader[1].ToString()  + " " 
                  +  reader[2].ToString());            
}
dbConnection.Close();

另请参见此transactionscope example

相关问题