C#操作SQLite数据库方法小结

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进行数据交互。

后端开发标签