下面是详细讲解“C#操作SQLite实现数据的增删改查”的完整攻略,过程中将包含两条示例。
1. SQLite介绍
SQLite是一款开源,轻量级的关系型数据库,和其他大型数据库相比,SQLite具有占用资源少、启动快、数据存储在本地等优点。在不需要大规模并发及复杂查询的应用场景下,SQLite是一种非常合适的数据库。
2. 准备工作
在开始前,我们需要安装 SQLite 数据库和 SQLite ADO.NET provider。推荐使用 nuget 包管理器安装 SQLite 数据库的依赖包。
3. 建立数据库连接
为了使用 SQLite,我们先要建立连接。可以使用下面的代码来实例化一个 SQLiteConnection:
SQLiteConnection connection = new SQLiteConnection("Data Source=database.sqlite3");
创建SQLiteConnection类的实例对象时,需要提供数据库文件的路径或者sqlite内存数据库的名字。更多的连接字符串选项可以在SQLite连接字符串文档中查看。
打开SQLite连接,使用下面的代码:
connection.Open();
打开连接后,可以把 SQLiteDataAdapter 和 DataSet 实例化来操作 SQLite 数据库。
4. 数据库操作
4.1 数据库表的创建
SQLite 是一款 SQL 数据库,使用标准 SQL 语句可以创建表、插入记录,更新记录,删除记录等。
使用下面的代码在 SQLite 中创建一个表:
string create_sql = @"CREATE TABLE Students (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
Name VARCHAR(50) NOT NULL,
Age INTEGER);";
SQLiteCommand command = new SQLiteCommand(create_sql, connection);
command.ExecuteNonQuery();
这段代码创建了一个名为“Students”的表,在该表中,有一个 ID 列为主键,并且自动创建,所以我们不需要为这个列显式的插入数据,因为每一次插入数据时,SQLite engine 会为这个 ID 生成一个唯一的号码。
4.2 数据库表中添加/更新数据
SQLite 提供了插入、更新数据的语法,可以使用 ADO.NET 中的 SQLiteCommand 类来执行这些命令。
插入一条数据:
string insert_sql = "INSERT INTO Students (Name, Age) VALUES ('小明', 20);";
SQLiteCommand insert_command = new SQLiteCommand(insert_sql, connection);
int result = insert_command.ExecuteNonQuery();
在这个示例中,我们插入了一条名字为“小明”,年龄为20的数据。ExecuteNonQuery()方法返回影响的行数,也就是说如果插入成功,则返回1。
4.3 数据库读取
要从 SQLite 中读取数据,我们可以使用 SQLiteDataReader。下面是使用 SQLiteDataReader 读取刚刚插入的数据的示例:
string read_sql = "SELECT * FROM Students WHERE Name='小明';";
SQLiteCommand read_command = new SQLiteCommand(read_sql, connection);
SQLiteDataReader reader = read_command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader.GetInt32(0) + " " + reader.GetString(1) + " " + reader.GetInt32(2));
}
reader.Close();
在这个示例中,我们读取了名字为“小明”的数据,并将其打印到控制台。ExecuteReader()方法返回一个 SQLiteDataReader 对象,可以读取查询结果的每一行,Read()方法将指针移动到下一行并返回一个布尔值,表示是否还有更多结果。
4.4 数据库表中数据删除
删除数据同样也可以使用 SQLiteCommand 来执行删除命令,下面是一个删除数据的示例:
string delete_sql = "DELETE FROM Students WHERE ID=1;";
SQLiteCommand delete_command = new SQLiteCommand(delete_sql, connection);
int delete_result = delete_command.ExecuteNonQuery();
在这个示例中,我们删除了 Students 表中 ID 为 1 的记录。
4.5 数据库表修改数据
修改数据同样也可以使用 SQLiteCommand 来执行修改命令,下面是一个修改数据的示例:
string update_sql = "UPDATE Students SET Age=15 WHERE Name='小明';";
SQLiteCommand update_command = new SQLiteCommand(update_sql, connection);
int update_result = update_command.ExecuteNonQuery();
在这个示例中,我们修改了 Students 表中名字为“小明”的记录的年龄为15。
5. 完整示例
下面是一个包含全部操作的完整示例:
using System;
using System.Data.SQLite;
class Program
{
static void Main(string[] args)
{
SQLiteConnection connection = new SQLiteConnection("Data Source=database.sqlite3");
connection.Open();
string create_sql = @"CREATE TABLE Students (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
Name VARCHAR(50) NOT NULL,
Age INTEGER);";
SQLiteCommand create_command = new SQLiteCommand(create_sql, connection);
create_command.ExecuteNonQuery();
string insert_sql = @"INSERT INTO Students (Name, Age) VALUES ('小明', 20);";
SQLiteCommand insert_command = new SQLiteCommand(insert_sql, connection);
int insert_result = insert_command.ExecuteNonQuery();
string read_sql = @"SELECT * FROM Students WHERE Name='小明';";
SQLiteCommand read_command = new SQLiteCommand(read_sql, connection);
SQLiteDataReader reader = read_command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader.GetInt32(0) + " " + reader.GetString(1) + " " + reader.GetInt32(2));
}
reader.Close();
string delete_sql = @"DELETE FROM Students WHERE ID=1;";
SQLiteCommand delete_command = new SQLiteCommand(delete_sql, connection);
int delete_result = delete_command.ExecuteNonQuery();
string update_sql = @"UPDATE Students SET Age=15 WHERE Name='小明';";
SQLiteCommand update_command = new SQLiteCommand(update_sql, connection);
int update_result = update_command.ExecuteNonQuery();
connection.Close();
}
}
在这个示例中,我们首先创建了一个名为“Students”的表,然后插入了一行数据(名字为“小明”,年龄为20),接着读取了该数据,并将其输出到控制台。然后删除了 ID 为 1(也就是我们插入的数据所在的那一行)的数据,最后将名字为“小明”的数据的年龄更新为 15。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#操作SQLite实现数据的增删改查 - Python技术站