Winform里添加SqliteSqlite数据库引用的步骤
一、添加System.Data.SQLite引用
二、添加linq2db引用
三、新建实体类
[Table("SysInfo")] public partial class SysInfo { [Column("Id"), PrimaryKey] [System.ComponentModel.DataAnnotations.Schema.DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)] public int? Id { get; set; } [Column("TypeName"), Nullable] public string TypeName { get; set; } [Column("InfoName"), Nullable] public string InfoName { get; set; } [Column("InfoValue"), Nullable] public string InfoValue { get; set; } [Column("CreateDate"), Nullable] public DateTime? CreateDate { get; set; } }
四、添加数据库访问上下文
public partial class SqliteDBContext : LinqToDB.Data.DataConnection { public SqliteDBContext(bool Password = false) : base("SQLite", "DataSource=" + AppDomain.CurrentDomain.BaseDirectory + "\\DB\\Data.db" + ";") { InitDataContext(); } public SqliteDBContext(string providerName, string configuration) : base(providerName, configuration) { InitDataContext(); } partial void InitDataContext(); public ITable<SysInfo> SysInfo { get { return this.GetTable<SysInfo>(); } } }
五、读取、插入、更新
[TestMethod] public void TestMethodRead() { try { SqliteDB.SqliteDBContext context = new SqliteDB.SqliteDBContext(); var first = context.SysInfo.First(); } catch (Exception ex) { throw ex; } }
[TestMethod] public void TestMethodInsert() { try { SqliteDB.SqliteDBContext context = new SqliteDB.SqliteDBContext(); SqliteDB.SysInfo info = new SqliteDB.SysInfo { Id = null, InfoName = "a", InfoValue = "值", TypeName = "分类" }; int i = context.Insert(info); } catch (Exception ex) { throw ex; } }
[TestMethod] public void TestMethodUpdate() { try { SqliteDB.SqliteDBContext context = new SqliteDB.SqliteDBContext(); SqliteDB.SysInfo info = context.SysInfo.Where(c => c.Id == 4).FirstOrDefault(); if (info != null) { info.InfoName = "测试更新"; } context.Update(info); } catch (Exception ex) { throw ex; } }
六、sqlite建表证句
CREATE TABLE SysInfo ( [Id] integer PRIMARY KEY autoincrement, -- 设置主键 [TypeName] varchar(50), [InfoName] varchar (50), [InfoValue] varchar (50), [CreateDate] datetime default (datetime('now', 'localtime')) -- 时间 );
特别注意:由于主键是自增的,所以实体中的主键要允许为空 public int? Id { get; set; }
在新增数据的时候赋一个空值如下:
SqliteDB.SysInfo info = new SqliteDB.SysInfo { Id = null, InfoName = "a", InfoValue = "值", TypeName = "分类" };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?