SqliteHelper整理

  刚开通博客不久,还没有发过文。这是第一篇,要鼓励我自己再接再厉。

  另外,我也是刚刚踏上程序员这条路,有赖各位多多提携!

  闲话不多说,最近参与的项目包含本地化存储这一块。昨天就园子里找了些资料有另外补充了一些,集合成了一个Helper类,现分享给大家!

  下面是全部代码:

复制代码
class SqliteHelper
{

private string connStr = "";
public SqliteHelper(string dbName, bool isFullPath)
{
if (isFullPath)
{
connStr = @"Data Source=" + dbName + ";Initial Catalog=sqlite;Integrated Security=True;Max Pool Size=10";
}
else
{
connStr = @"Data Source=" + System.Environment.CurrentDirectory + "\\" + dbName + ";Initial Catalog=sqlite;Integrated Security=True;Max Pool Size=10";

}

}

/// <summary>
/// 功能: 创建数据库,带路径
/// [2011-10-24 14:16 Bee]<para />
/// </summary>
/// <param name="dbName"></param>
public void CreateDB(string dbName, bool isFullPath)
{
if (isFullPath)
{
if (!File.Exists(dbName))
{
SQLiteConnection.CreateFile(dbName);
}
}
else
{
if (!File.Exists(System.Environment.CurrentDirectory + "\\" + dbName))
{
SQLiteConnection.CreateFile(System.Environment.CurrentDirectory + "\\" + dbName);
}
}
}

/// <summary>
/// 功能: 执行sql,不返回
/// [2011-10-24 14:15 Bee]<para />
/// </summary>
/// <param name="sqlStr">要执行的sql</param>
public void ExecuteSql(string sqlStr)
{
using (DbConnection conn = new SQLiteConnection(connStr))
{
conn.Open();
DbCommand comm = conn.CreateCommand();
comm.CommandText = sqlStr;
comm.CommandType = CommandType.Text;
comm.ExecuteNonQuery();
}
}

/// <summary>
/// 功能: 执行sql语句数组
/// [2011-10-24 14:54 Bee]<para />
/// </summary>
/// <param name="sqlStr"></param>
public void ExecuteSqlList(string[] sqlStr)
{
using (DbConnection conn = new SQLiteConnection(connStr))
{
conn.Open();
DbCommand comm = conn.CreateCommand();
foreach (string item in sqlStr)
{
comm.CommandText = item;
comm.CommandType = CommandType.Text;
comm.ExecuteNonQuery();
}

}
}

/// <summary>
/// 功能: 执行sql返回deteset
/// [2011-10-24 14:15 Bee]<para />
/// </summary>
/// <param name="sqlStr"></param>
/// <returns></returns>
public DataSet ExecDataSet(string sqlStr)
{
using (SQLiteConnection conn = new SQLiteConnection(connStr))
{
conn.Open();
SQLiteCommand cmd = conn.CreateCommand();
cmd.CommandText = sqlStr;
cmd.CommandType = CommandType.Text;

SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);

return ds;
}
}

/// <summary>
/// 功能: 判断表是否存在
/// [2011-10-24 14:14 Bee]<para />
/// </summary>
/// <param name="tableName"></param>
/// <returns>存在不存在</returns>
public bool IsTableExist(string tableName)
{
using (SQLiteConnection connection = new SQLiteConnection(connStr))
{
connection.Open();
using (SQLiteCommand command = new SQLiteCommand(connection))
{

command.CommandText = "SELECT COUNT(*) FROM sqlite_master where type='table' and name='" + tableName + "'";
int iaaa = Convert.ToInt32(command.ExecuteScalar());
if (Convert.ToInt32(command.ExecuteScalar()) == 0)
{
return false;
}
else
{
return true;
}
}
}
}



}
  
 
  

复制代码
  代码中包含注释,我就不啰嗦了。
  唯一一点需要注意的是:既然是在客户端本地存储,那么可能就不会只有一个文件,所以我设计的这个类实例化的时候需要带着数据文件的地址。
  如果已经确定只有一个文件,那么就没有必要这么麻烦了,所有的方法也就可以设置成静态的!
  本类中的dbName就是数据库文件,可以是全路径,类似“E:\test.db3”,也可以是相对路径,类似:“test.db3”。
  使用方法我就不罗嗦了。
  操作数据库用的DLL,还有工具,我不知道怎么上传。。。。。。
posted @   李言  阅读(6220)  评论(15编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示