System.Data.SQLite
或Microsoft.EntityFrameworkCore.Sqlite
进行操作。首先添加相应NuGet包,然后通过连接字符串建立连接,执行SQL语句实现数据存取。在C#中连接安卓客户端数据库通常涉及到使用SQLite数据库,因为SQLite是一种轻量级的、嵌入式的关系型数据库管理系统,非常适合移动应用,以下是如何在C#中实现与SQLite数据库的连接和操作的详细步骤:
安装必要的NuGet包
你需要在项目中安装Microsoft.Data.Sqlite
包,这是一个官方提供的用于处理SQLite数据库的库,你可以通过NuGet包管理器来安装它。
Install-Package Microsoft.Data.Sqlite
创建数据库和表
你需要创建一个SQLite数据库文件和一个或多个表,你可以使用以下C#代码来完成这一任务:
using Microsoft.Data.Sqlite; using System; namespace SQLiteExample { class Program { static void Main(string[] args) { // 创建一个新的SQLite连接字符串 var connectionString = "Data Source=mydatabase.db"; // 创建一个新的IDbConnection using (var connection = new SqliteConnection(connectionString)) { // 打开连接 connection.Open(); // 创建命令对象 var command = connection.CreateCommand(); // 创建用户表 string createTableQuery = @" CREATE TABLE IF NOT EXISTS Users ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT NOT NULL, Email TEXT NOT NULL UNIQUE ); "; // 执行创建表命令 command.CommandText = createTableQuery; command.ExecuteNonQuery(); Console.WriteLine("Table created successfully."); } } } }
插入数据
一旦你有了数据库和表,你就可以开始向表中插入数据了,以下是如何插入数据的示例:
using Microsoft.Data.Sqlite; using System; namespace SQLiteExample { class Program { static void Main(string[] args) { var connectionString = "Data Source=mydatabase.db"; using (var connection = new SqliteConnection(connectionString)) { connection.Open(); var command = connection.CreateCommand(); // 插入数据 string insertQuery = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)"; command.CommandText = insertQuery; command.Parameters.AddWithValue("@Name", "John Doe"); command.Parameters.AddWithValue("@Email", "john.doe@example.com"); int rowsAffected = command.ExecuteNonQuery(); Console.WriteLine($"{rowsAffected} rows inserted."); } } } }
查询数据
查询数据同样简单,以下是如何从表中检索数据的示例:
using Microsoft.Data.Sqlite; using System; using System.Data; namespace SQLiteExample { class Program { static void Main(string[] args) { var connectionString = "Data Source=mydatabase.db"; using (var connection = new SqliteConnection(connectionString)) { connection.Open(); var command = connection.CreateCommand(); // 查询数据 string selectQuery = "SELECT * FROM Users"; command.CommandText = selectQuery; using (var reader = command.ExecuteReader()) { while (reader.Read()) { Console.WriteLine($"Id: {reader["Id"]}, Name: {reader["Name"]}, Email: {reader["Email"]}"); } } } } } }
更新和删除数据
更新和删除数据的操作也类似,只是使用的SQL语句不同,以下是更新和删除数据的示例:
using Microsoft.Data.Sqlite; using System; namespace SQLiteExample { class Program { static void Main(string[] args) { var connectionString = "Data Source=mydatabase.db"; using (var connection = new SqliteConnection(connectionString)) { connection.Open(); var command = connection.CreateCommand(); // 更新数据 string updateQuery = "UPDATE Users SET Email = @Email WHERE Id = @Id"; command.CommandText = updateQuery; command.Parameters.AddWithValue("@Email", "new.email@example.com"); command.Parameters.AddWithValue("@Id", 1); int rowsUpdated = command.ExecuteNonQuery(); Console.WriteLine($"{rowsUpdated} rows updated."); // 删除数据 string deleteQuery = "DELETE FROM Users WHERE Id = @Id"; command.CommandText = deleteQuery; command.Parameters.AddWithValue("@Id", 1); int rowsDeleted = command.ExecuteNonQuery(); Console.WriteLine($"{rowsDeleted} rows deleted."); } } } }
相关问答FAQs
**Q1: 如何在C#中使用SQLite进行事务处理?
A1: 在C#中使用SQLite进行事务处理非常简单,你可以使用BeginTransaction
方法来开始一个事务,然后使用Commit
方法来提交事务,或者使用Rollback
方法来回滚事务,以下是一个示例:
using Microsoft.Data.Sqlite; using System; namespace SQLiteExample { class Program { static void Main(string[] args) { var connectionString = "Data Source=mydatabase.db"; using (var connection = new SqliteConnection(connectionString)) { connection.Open(); var transaction = connection.BeginTransaction(); try { var command = connection.CreateCommand(); command.Transaction = transaction; // 插入数据1 string insertQuery1 = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)"; command.CommandText = insertQuery1; command.Parameters.AddWithValue("@Name", "Jane Doe"); command.Parameters.AddWithValue("@Email", "jane.doe@example.com"); command.ExecuteNonQuery(); // 插入数据2 string insertQuery2 = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)"; command.CommandText = insertQuery2; command.Parameters.AddWithValue("@Name", "Jim Beam"); command.Parameters.AddWithValue("@Email", "jim.beam@example.com"); command.ExecuteNonQuery(); // 提交事务 transaction.Commit(); Console.WriteLine("Transaction committed successfully."); } catch (Exception ex) { // 回滚事务 transaction.Rollback(); Console.WriteLine("Transaction rolled back due to an error: " + ex.Message); } } } } }
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1484815.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复