1. 概述
SQLite是一款轻量级的数据库系统,常用于嵌入式设备和移动应用程序。在C#中使用SQLite可以通过SQLite.NET库进行操作。本文将总结C#中操作SQLite数据库的常见方法。
2. 安装SQLite.NET库
2.1 下载SQLite.NET库
首先,需要下载SQLite.NET库。可以在官方网站(https://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki)上找到最新的版本。
2.2 添加SQLite.NET库引用
将下载好的SQLite.NET库添加到C#项目中。右键点击项目,选择“添加”->“引用”,然后点击“浏览”按钮,选择刚才下载的SQLite.NET库文件,点击“确定”按钮。
3. 连接数据库
3.1 创建数据库连接对象
要连接SQLite数据库,首先需要创建一个SQLiteConnection对象,用于表示数据库连接。可以使用以下代码创建连接对象:
using System.Data.SQLite;
// ...
string connectionString = "Data Source=path/to/database";
SQLiteConnection connection = new SQLiteConnection(connectionString);
在上述代码中,path/to/database 是要连接的数据库文件的路径。
3.2 打开和关闭数据库连接
打开数据库连接可以使用Open方法,关闭数据库连接可以使用Close方法:
connection.Open(); // 打开连接
// ...
connection.Close(); // 关闭连接
在执行数据库操作之前必须先打开数据库连接,操作完成后应该及时关闭数据库连接。
4. 执行SQL语句
4.1 执行查询语句
可以使用SQLiteCommand对象来执行SQL语句。下面是一个执行查询语句的示例:
string sql = "SELECT * FROM table_name";
SQLiteCommand command = new SQLiteCommand(sql, connection);
SQLiteDataReader reader = command.ExecuteReader();
while (reader.Read())
{
// 处理查询结果
}
reader.Close();
在上述代码中,table_name 是要查询的表名。通过SQLiteCommand对象执行ExecuteReader方法可以返回一个SQLiteDataReader对象,然后使用Read方法遍历查询结果。
4.2 执行非查询语句
执行非查询语句(如插入、更新、删除等)可以使用ExecuteNonQuery方法:
string sql = "INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2')";
SQLiteCommand command = new SQLiteCommand(sql, connection);
int rowsAffected = command.ExecuteNonQuery();
在上述代码中,table_name 是要插入数据的表名,column1, column2 是要插入的列名。通过SQLiteCommand对象执行ExecuteNonQuery方法可以返回受影响的行数。
5. 使用事务
5.1 开始事务
可以通过BeginTransaction方法开始一个事务:
SQLiteTransaction transaction = connection.BeginTransaction();
5.2 执行事务操作
在事务中执行多个操作,可以使用同一个SQLiteCommand对象,然后调用它的Execute方法:
string sql1 = "INSERT INTO table_name (column1) VALUES ('value1')";
string sql2 = "UPDATE table_name SET column1 = 'value2'";
SQLiteCommand command = new SQLiteCommand(connection);
command.Transaction = transaction;
command.CommandText = sql1;
command.ExecuteNonQuery();
command.CommandText = sql2;
command.ExecuteNonQuery();
在上述代码中,command.Transaction 属性指定要使用的事务对象。
5.3 提交和回滚事务
执行完事务操作后,可以选择提交事务或者回滚事务:
transaction.Commit(); // 提交事务
// 或者
transaction.Rollback(); // 回滚事务
提交事务会将所有操作应用到数据库,回滚事务会撤销所有操作。
6. 预编译语句
6.1 创建预编译语句对象
预编译语句可以提高执行效率并防止SQL注入攻击。可以使用SQLiteCommand对象的Prepare方法创建预编译语句对象:
string sql = "INSERT INTO table_name (column1, column2) VALUES (@value1, @value2)";
SQLiteCommand command = new SQLiteCommand(sql, connection);
command.Parameters.AddWithValue("@value1", "value1");
command.Parameters.AddWithValue("@value2", "value2");
command.Prepare();
command.ExecuteNonQuery();
在上述代码中,使用@value1 和 @value2 作为占位符,并通过command.Parameters.AddWithValue 方法为占位符传递参数。
7. 总结
本文总结了C#中操作SQLite数据库的常见方法,包括连接数据库、执行SQL语句、使用事务和预编译语句。通过学习这些方法,可以更好地使用C#与SQLite进行数据交互。