深度解析feishu2md:专业级飞书文档到Markdown转换的技术实现方案
2026/6/9 8:24:46
本文系统介绍了在 C# 平台下操作 SQL 数据库的常用方法,旨在帮助读者快速掌握数据库的基本使用流程与关键技术。内容围绕实际开发场景展开,覆盖了常见的增删改查操作以及相关实现方式,为开发者在缺乏 SQL 基础的情况下带来直接可用的解决方案,从而有效降低因数据库知识不足而产生的开发难度。
该建表方法要求传入一个结构体类型作为参数,无参数返回。这个结构体的核心作用是定义 SQL 数据库表的字段名称与对应数据类型。使用结构体的优势在于,既能方便后续对字段的调取与操作,又能通过结构化的形式提升代码可读性,让程序整体逻辑更清晰、结构更简洁。若不想采用结构体的方式,也可替换为字典实现同等功能。
public struct Style { public string Key { get; set; } public string Type { get; set; } public Style(string key,string type) { this.Key = key; this.Type = type; } }public SQLite(string path,string name, bool readOnly) { this.Name = name; this.dbpath = path; this.connstr = $@" Data Source={dbpath}; Read Only={(readOnly ? "True" : "False")}; Journal Mode=WAL; Cache Size=10000; "; }public void CreateDatabase(Style [] style) { if (!File.Exists(dbpath)) { File.Create(dbpath).Dispose(); } using (var conn = new SQLiteConnection(connstr)) { conn.Open(); string colsSql = string.Join(",",style.Select(p=>$"{p.Key} {p.Type}")); string sql = $@" CREATE TABLE IF NOT EXISTS {Name} ( ID integer PRIMARY KEY AUTOINCREMENT, {colsSql} ); "; using (var cmd = new SQLiteCommand(sql, conn)) { cmd.ExecuteNonQuery(); } conn.Close(); } }SQLite history = new SQLite(@"E:\\C#学习\\自建库\\LXK\\history.db", "历史记录", false); Style[] styles = new Style[] { new Style ("轴号","text"), new Style ("数据","text"), new Style ("操作员","text"), }; history.CreateDatabase(styles); 该插入方法需要输入三个参数,第一个是SQL数据库中表的名称,第二个是一个结构体变量,也就是在建表时候设定的表头字段,第三个参数是一个字符串数组,用户只需要创建一个字符串数组变量并按照先前设定的表头结构依次写入需要输入的参数即可
public void Insert(string name,Style[] style, string[] data) { if (style.Length != data.Length) throw new Exception("列与数据数量不一致"); string keystr = string.Join(", ", style.Select(s => s.Key)); string[] values = style.Select((s, i) => "@p" + i).ToArray(); string valuesstr = string.Join(", ", values); string sql = $"INSERT INTO {name} ({keystr}) VALUES ({valuesstr})"; using (var conn = new SQLiteConnection(connstr)) { conn.Open();