Csharp环境下实现Sqlite数据库的基本操作

发表时间: 2024-03-12 19:43


在C#中,使用Microsoft.Data.Sqlite包来实现SQLite数据库的增删改查操作是一种常见做法。这个包为SQLite数据库提供了一个轻量级的、跨平台的.NET Standard兼容的数据访问库。

实现的基本步骤如下:

1. 安装Microsoft.Data.Sqlite包

首先,需要通过NuGet包管理器安装Microsoft.Data.Sqlite包。这可以通过Visual Studio的NuGet包管理器或使用包管理控制台(Package Management Console)执行以下命令来完成。

控制台命令

Install-Package Microsoft.Data.Sqlite


包管理器

2. 创建数据库连接

使用SqliteConnection类来创建与SQLite数据库的连接。如果数据库文件不存在,它会被自动创建。

引入命名空间

using Microsoft.Data.Sqlite;

连接数据库到运行目录下的mydatabase.db3数据文件

string connectionString = "Data Source=mydatabase.db3";SqliteConnection connection = new SqliteConnection(connectionString);

3. 创建数据库和表

如果数据库或表还不存在,使用SqliteCommand来创建它们。在数据库中创建一个名为mytable的数据表,包含id,name,age三个字段,其中id为主键。

string createTableCommand = @"CREATE TABLE IF NOT EXISTS MyTable ( Id INTEGER PRIMARY KEY,Name TEXT NOT NULL,Age INTEGER)";connection.Open();SqliteCommand command = new SqliteCommand(createTableCommand, connection);command.ExecuteNonQuery();connection.Close();

4. 插入数据(Create)

使用INSERT语句向表中添加新记录。插入一行数据,name为John Doe,age为30,id为自增字段,不需要写入。注意,使用参数化查询(
command.Parameters.AddWithValue),可以防止SQL注入攻击。

string insertCommand = @"INSERT INTO MyTable (Name, Age)VALUES (@Name, @Age)";connection.Open();command = new SqliteCommand(insertCommand, connection);command.Parameters.AddWithValue("@Name", "John Doe");command.Parameters.AddWithValue("@Age", 30);command.ExecuteNonQuery();connection.Close();

5. 查询数据(Read)

使用SELECT语句从表中检索数据。查询表中的数据时,一般正式开发是不推荐使用”*“,应列举出需要的字段。

string selectCommand = "SELECT * FROM MyTable";connection.Open();command = new SqliteCommand(selectCommand, connection);SqliteDataReader reader = command.ExecuteReader();while (reader.Read()){	Console.WriteLine($"Id: {reader.GetInt32(0)}, Name: {reader.GetString(1)}, Age: {reader.GetInt32(2)}");}reader.Close();connection.Close();

6. 更新数据(Update)

使用UPDATE语句更新现有记录。更新id为1的数据行,修改name为Jane Doe,age为31。

string updateCommand = @"UPDATE MyTable SET Name = @NewName, Age = @NewAge WHERE Id = @Id";connection.Open();command = new SqliteCommand(updateCommand, connection);command.Parameters.AddWithValue("@NewName", "Jane Doe");command.Parameters.AddWithValue("@NewAge", 31);command.Parameters.AddWithValue("@Id", 1);command.ExecuteNonQuery();connection.Close();

7. 删除数据(Delete)

使用DELETE语句从表中删除记录。删除id为1的数据行。

string deleteCommand = "DELETE FROM MyTable WHERE Id = @Id";connection.Open();command = new SqliteCommand(deleteCommand, connection);command.Parameters.AddWithValue("@Id", 1);command.ExecuteNonQuery();connection.Close();

在实际使用时,通常会把上述代码包装成一个独立的类,实现增删改查的操作,为整个程序提供基本的数据服务。另外,在每次操作完数据库后,需要及时关闭连接。在实际开发过程中,还需要根据具体要求,考虑使用事务来确保数据的一致性和完整性。