在项目中能正常编译的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SQLite;
using System.Threading;namespace MachineDemo.Utils
{public class SQLiteDbHelper{// 用户实体类public class User{public int Id { get; set; }public string Name { get; set; }public int Age { get; set; }public string Email { get; set; }}public class RandomUserGenerator{private static Random random = new Random();private static int nameCounter = 0; // 唯一计数器public static User GenerateRandomUser(){// 随机名字列表 string[] names = { "Alice", "Bob", "Charlie", "David", "Eva", "Frank", "Grace", "Henry", "Ivy", "Jack" };// 随机选择一个名字,并附加唯一计数器 string randomName = $"{names[random.Next(names.Length)]}{nameCounter++}";// 随机生成年龄(1到120岁) int randomAge = random.Next(1, 121);// 生成随机邮箱 string baseEmail = "user";int randomNumber = random.Next(0, 99999); // 生成0到99999之间的随机数 string randomEmail = $"{baseEmail}{randomNumber.ToString("D5")}@example.com";return new User{Name = randomName,Age = randomAge,Email = randomEmail};}}//public class RandomUserGenerator// {// private static Random random = new Random();// public static User GenerateRandomUser()// {// // 随机名字列表// string[] names = { "Alice", "Bob", "Charlie", "David", "Eva", "Frank", "Grace", "Henry", "Ivy", "Jack" };// // 随机选择一个名字// string randomName = names[random.Next(names.Length)];// // 随机生成年龄(1到120岁)// int randomAge = random.Next(1, 121);// // 生成随机邮箱// string baseEmail = "user";// int randomNumber = random.Next(0, 99999); // 生成0到99999之间的随机数// string randomEmail = $"{baseEmail}{randomNumber.ToString("D5")}@example.com";// return new User// {// Name = randomName,// Age = randomAge,// Email = randomEmail// };// }// }private static readonly SemaphoreSlim writeLock = new SemaphoreSlim(1, 1);private readonly string connectionString;/// <summary/// 初始化数据库连接(.NET 4.6.1兼容版本)/// </summarypublic SQLiteDbHelper(string dbPath){// 配置连接参数var builder = new SQLiteConnectionStringBuilder{DataSource = dbPath,Version = 3,Pooling = true,//MaxPoolSize = 10,DefaultTimeout = 30,FailIfMissing = false};connectionString = builder.ConnectionString;InitializeDatabase();}/// <summary/// 初始化数据库结构/// </summaryprivate void InitializeDatabase(){using (var conn = new SQLiteConnection(connectionString)){conn.Open();const string sql = @"CREATE TABLE IF NOT EXISTS Users (Id INTEGER PRIMARY KEY AUTOINCREMENT,Name TEXT NOT NULL,Age INTEGER,Email TEXT UNIQUE)";new SQLiteCommand(sql, conn).ExecuteNonQuery();}}/// <summary/// 异步插入用户(线程安全)/// </summarypublic async Task<int> InsertUserAsync(User user){await writeLock.WaitAsync();try{using (var conn = new SQLiteConnection(connectionString)){await conn.OpenAsync();const string sql = @"INSERT INTO Users (Name, Age, Email)VALUES (@Name, @Age, @Email);SELECT lastinsertrowid();";using (var cmd = new SQLiteCommand(sql, conn)){cmd.Parameters.AddWithValue("@Name", user.Name);cmd.Parameters.AddWithValue("@Age", user.Age);cmd.Parameters.AddWithValue("@Email", user.Email);return Convert.ToInt32(await cmd.ExecuteScalarAsync());}}}finally{writeLock.Release();}}/// <summary/// 异步查询所有用户/// public async Task<int> InsertUserAsync(User user)/// </summarypublic async Task<User[]> GetAllUsersAsync()//public Task<User[]> GetAllUsersAsync(){using (var conn = new SQLiteConnection(connectionString)){await conn.OpenAsync();//conn.OpenAsync();const string sql = "SELECT FROM Users";using (var cmd = new SQLiteCommand(sql, conn))using (var reader = await cmd.ExecuteReaderAsync())//using (var reader = cmd.ExecuteReader()){var users = new System.Collections.Generic.List<User>();//while (await reader.ReadAsync())while (reader.Read()){users.Add(new User{Id = reader.GetInt32(0),Name = reader.GetString(1),Age = reader.GetInt32(2),Email = reader.IsDBNull(3) ? null : reader.GetString(3)});}// return users.ToArray();return users.ToArray();}}}//同步//public User[] GetAllUsers()//{// using (var conn = new SQLiteConnection(connectionString))// {// conn.Open();// const string sql = "SELECT * FROM Users";// using (var cmd = new SQLiteCommand(sql, conn))// using (var reader = cmd.ExecuteReader())// {// var users = new List<User>();// while (reader.Read())// {// users.Add(new User// {// Id = reader.GetInt32(0),// Name = reader.GetString(1),// Age = reader.GetInt32(2),// Email = reader.IsDBNull(3) ? null : reader.GetString(3)// });// }// return users.ToArray();// }// }//}/// <summary/// 异步删除用户(线程安全)/// </summarypublic async Task<int> DeleteUserAsync(int userId){await writeLock.WaitAsync();try{using (var conn = new SQLiteConnection(connectionString)){await conn.OpenAsync();const string sql = "DELETE FROM Users WHERE Id = @Id";using (var cmd = new SQLiteCommand(sql, conn)){cmd.Parameters.AddWithValue("@Id", userId);return await cmd.ExecuteNonQueryAsync();}}}finally{writeLock.Release();}}}
}
效果展示,数据库里持续增加随机值
调用方法
var dbHelper = new SQLiteDbHelper("database.db");
var randomUser = RandomUserGenerator.GenerateRandomUser();var userId = dbHelper.InsertUserAsync(randomUser);
用everything软件搜到这个database.db数据库
使用数据库可视化工具看效果