SQLite 是一种轻量级的嵌入式关系型数据库,广泛用于移动应用、桌面应用以及嵌入式系统中。在C#中,通过SQLite数据库进行数据存储和检索是一项常见任务。本文将介绍如何在C#中使用SQLite数据库,并提供相应的示例代码。
准备工作
- 安装SQLite库: 在C#项目中,我们通常使用System.Data.SQLite库来与SQLite数据库进行交互。你可以通过NuGet包管理器来安装这个库。常用的包有System.Data.SQLite和Microsoft.Data.Sqlite。本文将使用Microsoft.Data.Sqlite。在Visual Studio中,右键点击你的项目,选择“管理NuGet包”,然后搜索Microsoft.Data.Sqlite并安装。
- 创建SQLite数据库: 如果你还没有SQLite数据库,可以使用SQLite工具(如DB Browser for SQLite)创建一个数据库文件,或者在代码中动态创建。
示例代码
下面是一个完整的示例,展示如何在C#中使用SQLite数据库进行创建表、插入数据、查询数据和更新数据等操作。
1. 创建SQLite连接
首先,我们需要创建一个SQLite连接。
using System;
using Microsoft.Data.Sqlite;
class Program
{
private static string connectionString = "Data Source=mydatabase.db";
static void Main(string[] args)
{
using (var connection = new SqliteConnection(connectionString))
{
connection.Open();
// 在这里进行数据库操作
CreateTable(connection);
InsertData(connection);
QueryData(connection);
UpdateData(connection);
}
}
// 其他数据库操作方法...
}
2. 创建表
接下来,我们创建一个表。例如,我们创建一个名为Users的表,包含Id和Name两个字段。
static void CreateTable(SqliteConnection connection)
{
string sql = "CREATE TABLE IF NOT EXISTS Users (Id INTEGER PRIMARY KEY, Name TEXT)";
using (var command = new SqliteCommand(sql, connection))
{
command.ExecuteNonQuery();
Console.WriteLine("Table 'Users' created.");
}
}
3. 插入数据
向Users表中插入一些数据。
static void InsertData(SqliteConnection connection)
{
string sql = "INSERT INTO Users (Name) VALUES (@Name)";
using (var command = new SqliteCommand(sql, connection))
{
command.Parameters.AddWithValue("@Name", "Alice");
command.ExecuteNonQuery();
command.Parameters.AddWithValue("@Name", "Bob");
command.ExecuteNonQuery();
Console.WriteLine("Data inserted into 'Users'.");
}
}
4. 查询数据
从Users表中查询数据并输出。
static void QueryData(SqliteConnection connection)
{
string sql = "SELECT Id, Name FROM Users";
using (var command = new SqliteCommand(sql, connection))
{
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine($"Id: {reader["Id"]}, Name: {reader["Name"]}");
}
}
}
}
5. 更新数据
更新Users表中的数据。
static void UpdateData(SqliteConnection connection)
{
string sql = "UPDATE Users SET Name = @NewName WHERE Id = @Id";
using (var command = new SqliteCommand(sql, connection))
{
command.Parameters.AddWithValue("@NewName", "Charlie");
command.Parameters.AddWithValue("@Id", 1);
command.ExecuteNonQuery();
Console.WriteLine("Data updated in 'Users'.");
}
}
完整代码
以下是完整代码的汇总:
using System;
using Microsoft.Data.Sqlite;
class Program
{
private static string connectionString = "Data Source=mydatabase.db";
static void Main(string[] args)
{
using (var connection = new SqliteConnection(connectionString))
{
connection.Open();
CreateTable(connection);
InsertData(connection);
QueryData(connection);
UpdateData(connection);
QueryData(connection); // 再次查询以查看更新结果
}
}
static void CreateTable(SqliteConnection connection)
{
string sql = "CREATE TABLE IF NOT EXISTS Users (Id INTEGER PRIMARY KEY, Name TEXT)";
using (var command = new SqliteCommand(sql, connection))
{
command.ExecuteNonQuery();
Console.WriteLine("Table 'Users' created.");
}
}
static void InsertData(SqliteConnection connection)
{
string sql = "INSERT INTO Users (Name) VALUES (@Name)";
using (var command = new SqliteCommand(sql, connection))
{
command.Parameters.AddWithValue("@Name", "Alice");
command.ExecuteNonQuery();
command.Parameters.AddWithValue("@Name", "Bob");
command.ExecuteNonQuery();
Console.WriteLine("Data inserted into 'Users'.");
}
}
static void QueryData(SqliteConnection connection)
{
string sql = "SELECT Id, Name FROM Users";
using (var command = new SqliteCommand(sql, connection))
{
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine($"Id: {reader["Id"]}, Name: {reader["Name"]}");
}
}
}
}
static void UpdateData(SqliteConnection connection)
{
string sql = "UPDATE Users SET Name = @NewName WHERE Id = @Id";
using (var command = new SqliteCommand(sql, connection))
{
command.Parameters.AddWithValue("@NewName", "Charlie");
command.Parameters.AddWithValue("@Id", 1);
command.ExecuteNonQuery();
Console.WriteLine("Data updated in 'Users'.");
}
}
}
结论
通过本文,我们了解了如何在C#中使用SQLite数据库进行基本的CRUD操作。使用Microsoft.Data.Sqlite库,可以方便地创建连接、执行SQL命令以及查询和处理结果。SQLite的轻量级特性使得它非常适合嵌入式和本地存储的应用场景。希望本文对你有所帮助,欢迎你在项目中尝试使用SQLite数据库!