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、插入单条记录
使用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
语句来更新数据,更新用户的姓名:
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、关闭连接
完成所有数据库操作后,记得关闭连接:
connection.Close();
**问:如何在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都是一个值得考虑的选择,希望这篇入门指南对你有所帮助!