C# .NET - C#操作数据库 - C#与SQLite
C# .NET 7.0访问操作SQLite数据库示例
本示例将介绍在.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)
收藏 列表

评论:

导航