本示例将介绍在.NET 7上使用SQLite数据库的方法。
HovertreeSqliteKit是一个开源、免费、跨平台的SQLite数据库操作工具。
此资源支持在.NET 7和.NET 6等中使用SQLite数据库。
以下先介绍使用步骤,文后附有源码下载。
使用Visual Studio 2022创建新项目:
选择“Windows窗体应用”(用于创建.NET Windows窗体(WinForms)应用的项目模板),然后点击下一步
项目名称这里填写HovertreeSqliteTest,然后点击下一步
框架选择“.NET 7.0(标准期限支持)”,点击创建。
然后来到“解决方案资源管理器”,右键点击“解决方案'HovertreeSqliteTest'”,在弹出菜单点击“在文件资源管理器中打开文件夹”,来到解决方案的文件夹里,然后把下载的HovertreeSqliteTest压缩包解压后,把两个文件夹“HovertreeSqliteBase”和“HovertreeSqliteDll”,复制到刚才打开的解决方案的文件夹“HovertreeSqilteTest”下。复制完成后,解决方案目录下的内容如下图:
然后在解决方案中添现有项目HovertreeSqliteBase。添加完成后如下图:
然后展开项目HovertreeSqilteTest,右键点击“依赖项”,在弹出菜单上选择“添加项目引用(R)...”,添加项目引用HovertreeSqliteBase.csproj(在文件夹HovertreeSqliteBase下),如下图:
然后还需要添加依赖项HovertreeSqliteKit.dll(程序集在HovertreeSqliteDll文件夹下),如下图:
添加完成后如下图:
后续需要在窗体上添加控件和相应的代码,步骤请参考下载的源代码,运行效果如下图:
示例源代码:
/* 使用HovertreeSqliteKit工具操作SQLite数据的示例,C# 11,Visual Studio 2022, .NET 7.0 CopyRight hovertree.com by 何问起 使用方法:https://hovertree.com/h/bjag/rfl1yu40.htm */ using Hovertree.HtDb.HovertreeSqliteKit; namespace HovertreeSqilteTest { public partial class Form1 : Form { string h_dbfile; HovertreeSqliteDb h_sqliteDb; public Form1() { InitializeComponent(); h_dbfile = Environment.CurrentDirectory + "\\HovertreeTestDb1.db"; h_sqliteDb = new HovertreeSqliteDb(h_dbfile); } /// <summary> /// 打开数据库连接 /// </summary> /// <returns>成功返回treu,失败返回false</returns> bool HtOpenDb() { if (h_sqliteDb == null) return false; return h_sqliteDb.HtOpen(); } /// <summary> /// 检查数据库中是否存在表 /// </summary> /// <param name="tableName">表名</param> /// <returns>成功返回treu,失败返回false</returns> bool HtCheck(string tableName) { return h_sqliteDb.HtIsTableExist(tableName); } private void buttonHtCheck_Click(object sender, EventArgs e) { if (!HtOpenDb()) { labelHtResult.Text = "连接数据库失败:" + h_sqliteDb.HtStringOfConnection; } bool h_result; h_result = HtCheck(textBoxHtTableName.Text); if (h_result) { labelHtResult.Text = "表:" + textBoxHtTableName.Text + ",存在√"; } else { labelHtResult.Text = "表:" + textBoxHtTableName.Text + ",不存在×"; } } /// <summary> /// 检查表名格式 /// </summary> /// <param name="tableName"></param> /// <returns>返回空字符串表示没有检查出异常</returns> string HtCheckTableName(string tableName) { if (string.IsNullOrWhiteSpace(tableName)) return "表名不可为空"; return string.Empty; } /// <summary> /// 新建表 /// </summary> /// <param name="tableName">表名</param> /// <returns>返回空字符串表示新建表成功,否则表示失败原因</returns> string HtCreateTable(string tableName) { if (!HtOpenDb()) { labelHtResult.Text = "连接数据库失败:" + h_sqliteDb.HtStringOfConnection; } string m_tips = HtCheckTableName(tableName); if (m_tips != string.Empty) { return m_tips; } if (HtCheck(tableName)) { return "该表名已经存在"; } string m_sql = "CREATE TABLE " + HtDoubleQuote(tableName.Trim()) + " ( htID INTEGER PRIMARY KEY AUTOINCREMENT,htName VARCHAR NOT NULL,htCreateTime DATETIME DEFAULT (now() )) "; int m_i = h_sqliteDb.HtExecuteSql(m_sql); if (m_i == 0) { return string.Empty; } else { return "新建表失败"; } } string HtDoubleQuote(string sql) { if (string.IsNullOrWhiteSpace(sql)) return string.Empty; return sql.Replace("'", "''"); } private void buttonHtCreateTable_Click(object sender, EventArgs e) { string m_tips = HtCreateTable(textBoxHtTableName.Text); if (m_tips == string.Empty) { labelHtResult.Text = "新建表成功" + DateTime.Now.ToString(); } else { labelHtResult.Text = m_tips; } } } }
HovertreeSqliteDb类(1.0版本),位于命名空间Hovertree.HtDb.HovertreeSqliteKit下。可对SQLite数据进行执行SQL语句,查询表记录等。
HovertreeSqliteDb(1.0) 类,实例化例子和成员介绍:
//实例化例子 HovertreeSqliteDb h_sqliteDb=new HovertreeSqliteDb("E:\\hovertreeDb\\HovertreeTestDb1.db"); /// <summary> /// 检查表是否存在 /// </summary> /// <param name="tableName">表 的名称</param> /// <returns>如果表在数据中存在,则返回true,否则返回false</returns> bool HtIsTableExist(string tableName) /// <summary> /// 执行SQL语句 /// </summary> /// <param name="sql"></param> /// <returns>返回受影响的行数,如果是创建表等sql语句,成功则返回0,失败一般返回-1</returns> int HtExecuteSql(string sql) /// <summary> /// 查询 /// </summary> /// <param name="queryString">要查询的SQL语句,例如 select top 10 * from hovertreeStudent order by htid desc</param> /// <returns>返回查询语句执行后的数据表,返回NULL表示无返回</returns> DataTable HtQueryTable(string queryString) /// <summary> /// 关闭数据库链接 /// </summary> void HtClose() /// <summary> /// 分页查询(SQLite) /// </summary> /// <param name="pageSize">每个分页中的记录数</param> /// <param name="pageIndex">分页索引:第几个分页</param> /// <param name="tableName">要查询的表名</param> /// <param name="filedList">要查询的字段列表</param> /// <param name="uniqueFiled">唯一约束字段</param> /// <param name="uniqueFiledSorted"></param> /// <param name="whereString">where条件,不包含“where”关键字</param> /// <param name="orderString">排序语句,不包含“order by”</param> /// <param name="totalRecordCount">总记录数</param> /// <param name="totalPageCount">总分页数</param> /// <returns>返回查询语句执行后的数据表,返回NULL表示未查询到内容</returns> DataTable HtQueryPage(int pageSize, int pageIndex, string tableName, string filedList, string uniqueFiled, HovertreeSortedType uniqueFiledSorted, string whereString, string orderString, out int totalRecordCount, out int totalPageCount) /// <summary> /// 查询一条记录 /// </summary> /// <param name="querySql">要执行的查询语句,例如select * from hovertreeStudent where htid=16</param> /// <returns>返回查询到的记录,返回null表示未查询到数据</returns> DataRow HtQueryRow(string querySql) /// <summary> /// 查询一个对象(第一条记录中,第一个字段的值) /// </summary> /// <param name="sql">要执行的查询语句,例如select htName from hovertreeStudent where htid =16</param> /// <returns>返回查询到的值,返回null表示未查询到数据</returns> object HtQueryScalar(string sql)