当前位置:首页 > 行业动态 > 正文

C# SQLite数据库入门使用说明

简答C#使用SQLite需安装System.Data.SQLite包,创建连接并执行SQL命令。

C# SQLite数据库入门使用说明

SQLite 是一个轻量级的嵌入式关系型数据库,它非常适合用于小型应用程序和移动设备,在C#中使用SQLite数据库可以大大简化数据管理任务,以下是详细的入门指南:

一、环境准备

1、安装SQLite

下载并安装SQLite的最新版本,可以从[SQLite官方网站](https://www.sqlite.org/download.html)下载预编译的二进制文件。

将下载的文件解压到合适的目录。

2、**安装SQLite的C#封装库

通过NuGet包管理器安装SQLite的C#封装库System.Data.SQLite,可以使用以下命令安装:

 Install-Package System.Data.SQLite

二、创建和连接数据库

1、引用命名空间

在你的C#项目中,需要引用SQLite的命名空间:

 using System.Data.SQLite;

2、创建数据库连接

使用SQLiteConnection类来创建和打开数据库连接,创建一个名为test.db的数据库文件:

 string connectionString = "Data Source=test.db;Version=3;";
     SQLiteConnection connection = new SQLiteConnection(connectionString);
     connection.Open();

三、创建表

1、执行SQL语句

使用SQLiteCommand类来执行SQL语句,下面是创建一个简单的用户表的例子:

 string createTableQuery = "CREATE TABLE IF NOT EXISTS Users (" +
                              "Id INTEGER PRIMARY KEY AUTOINCREMENT, " +
                              "Name TEXT NOT NULL, " +
                              "Age INTEGER NOT NULL);";
     SQLiteCommand command = new SQLiteCommand(createTableQuery, connection);
     command.ExecuteNonQuery();

四、插入数据

1、插入单条记录

C# SQLite数据库入门使用说明

使用INSERT INTO语句来插入数据,向Users表中插入一条记录:

 string insertQuery = "INSERT INTO Users (Name, Age) VALUES ('John Doe', 30);";
     SQLiteCommand insertCommand = new SQLiteCommand(insertQuery, connection);
     insertCommand.ExecuteNonQuery();

2、插入多条记录

如果需要插入多条记录,可以在事务中执行多个INSERT INTO语句:

 connection.BeginTransaction();
     try
     {
         string[] names = { "Alice", "Bob", "Charlie" };
         foreach (string name in names)
         {
             string insertQuery = $"INSERT INTO Users (Name, Age) VALUES ('{name}', 25);";
             SQLiteCommand insertCommand = new SQLiteCommand(insertQuery, connection);
             insertCommand.ExecuteNonQuery();
         }
         connection.Commit();
     }
     catch
     {
         connection.Rollback();
         throw;
     }

五、查询数据

1、简单查询

使用SELECT语句来查询数据,查询所有用户的信息:

 string selectQuery = "SELECT * FROM Users;";
     SQLiteCommand selectCommand = new SQLiteCommand(selectQuery, connection);
     SQLiteDataReader reader = selectCommand.ExecuteReader();
     while (reader.Read())
     {
         int id = reader.GetInt32(0);
         string name = reader.GetString(1);
         int age = reader.GetInt32(2);
         Console.WriteLine($"ID: {id}, Name: {name}, Age: {age}");
     }
     reader.Close();

2、参数化查询

为了防止SQL注入攻击,建议使用参数化查询,根据用户名查询用户信息:

 string parameterizedQuery = "SELECT * FROM Users WHERE Name = @Name;";
     SQLiteCommand parameterizedCommand = new SQLiteCommand(parameterizedQuery, connection);
     parameterizedCommand.Parameters.AddWithValue("@Name", "John Doe");
     SQLiteDataReader parameterizedReader = parameterizedCommand.ExecuteReader();
     while (parameterizedReader.Read())
     {
         int id = parameterizedReader.GetInt32(0);
         string name = parameterizedReader.GetString(1);
         int age = parameterizedReader.GetInt32(2);
         Console.WriteLine($"ID: {id}, Name: {name}, Age: {age}");
     }
     parameterizedReader.Close();

六、更新和删除数据

1、更新数据

使用UPDATE语句来更新数据,更新用户的姓名:

C# SQLite数据库入门使用说明

 string updateQuery = "UPDATE Users SET Name = 'Jane Doe' WHERE Id = 1;";
     SQLiteCommand updateCommand = new SQLiteCommand(updateQuery, connection);
     updateCommand.ExecuteNonQuery();

2、删除数据

使用DELETE语句来删除数据,删除某个用户:

 string deleteQuery = "DELETE FROM Users WHERE Id = 1;";
     SQLiteCommand deleteCommand = new SQLiteCommand(deleteQuery, connection);
     deleteCommand.ExecuteNonQuery();

七、事务处理

1、开始事务

使用BeginTransaction方法开始一个事务:

 connection.BeginTransaction();

2、提交事务

使用Commit方法提交事务:

 connection.Commit();

3、回滚事务

如果发生错误,可以使用Rollback方法回滚事务:

 connection.Rollback();

八、关闭连接

1、关闭连接

C# SQLite数据库入门使用说明

完成所有数据库操作后,记得关闭连接:

 connection.Close();

FAQs(常见问题解答)

**问:如何在C#中使用SQLite数据库进行数据备份?

答:可以通过复制数据库文件来进行备份,在C#中,可以使用File.Copy方法来实现。

string sourcePath = "path_to_your_database.db";
string destinationPath = "path_to_backup_location\backup_database.db";
File.Copy(sourcePath, destinationPath, true);

这将把数据库文件从源路径复制到目标路径,实现备份,如果目标文件已存在,true参数将允许覆盖它。

**问:在C#中使用SQLite时,如何设置连接字符串的密码?

答:虽然SQLite本身不直接支持对整个数据库文件加密,但你可以通过第三方库如SQLite Encryption Extension SEE来实现加密,对于连接字符串中的密码设置,通常需要在创建数据库连接时指定加密密钥,使用SEE库时,可以在连接字符串中添加Key参数来指定加密密钥:

string connectionString = "Data Source=encrypted_test.db;Version=3;Key='my_secret_key';";
SQLiteConnection connection = new SQLiteConnection(connectionString);
connection.Open();

这样,在打开加密的数据库文件时,就需要提供正确的密钥才能成功连接,这里的示例假设你已经正确安装了SEE库并进行了相应的配置,具体的实现方式可能会因使用的加密库而有所不同。

小编有话说

在C#中使用SQLite数据库可以为应用程序提供便捷的本地数据存储解决方案,通过遵循上述步骤,你可以轻松地创建、连接、操作和管理SQLite数据库,无论是桌面应用还是移动应用,SQLite都是一个值得考虑的选择,希望这篇入门指南对你有所帮助!