SQLite的帮助类
由于sqlserver安装复杂,维护困难,对于存储一些简单的数据,使用SQLite无疑是个好的选择
经过我的了解,我发现无论是SQLSERVER,还是MySQL,还是SQLite,他们的关键词都是大差不差的
比如SQLSERVER的connection关键词就是SqlConnection,SQLite的就是SQLiteConnection
今天是第一次使用SQLite,写了个帮助类,使用的时候直接调用就可以,非常方便
现在配置文件中写入以下代码
<connectionStrings> <add name="SQLiteConnectionString" connectionString="Data Source=database.sqlite;" providerName="System.Data.SQLite" /> </connectionStrings>
然后新建一个类,名为SQLiteHelper
以下是帮助类的代码
string connstr = ConfigurationManager.ConnectionStrings["SQLiteConnectionString"].ConnectionString.ToString(); //执行增、删、改的方法:ExecuteNonQuery,返回受影响的行数 public int ExecuteNonQuery(string sql, params SQLiteParameter[] pms) { try { using (SQLiteConnection conn = new SQLiteConnection(connstr)) { using (SQLiteCommand cmd = new SQLiteCommand(sql, conn)) { if (pms != null) { cmd.Parameters.AddRange(pms); } conn.Open(); return cmd.ExecuteNonQuery(); } } } catch (Exception ex) { // 处理异常,例如记录日志或抛出异常等操作 throw new Exception("An error occurred while executing the SQLite command: " + ex.Message); } } //将查出的数据装到table里,返回一个DataTable public DataTable GetDatatableData(string sql, params SQLiteParameter[] pms) { DataTable dt = new DataTable(); try { using (SQLiteDataAdapter adapter = new SQLiteDataAdapter(sql, connstr)) { if (pms != null) { adapter.SelectCommand.Parameters.AddRange(pms); } adapter.Fill(dt); } } catch (Exception ex) { // 记录或处理异常,例如输出到日志或向用户显示错误信息 Console.WriteLine(ex.Message); } return dt; } //将查出的数据装到DataSet里,返回一个DataSet public DataSet GetDataSet(string sql, params SQLiteParameter[] pms) { DataSet dataSet = new DataSet(); try { using (SQLiteDataAdapter adapter = new SQLiteDataAdapter(sql, connstr)) { if (pms != null) { adapter.SelectCommand.Parameters.AddRange(pms); } adapter.Fill(dataSet); } } catch (Exception ex) { // 记录或处理异常,例如输出到日志或向用户显示错误信息 Console.WriteLine(ex.Message); } return dataSet; } /// <summary> /// 判断数据库中是否已存在此表 /// </summary> /// <param name="tableName">表名</param> /// <returns>如果数据库中已存在此表,则返回true</returns> public bool TableExists(string tableName) { try { using (SQLiteConnection conn = new SQLiteConnection(connstr)) { conn.Open(); // 打开连接 string sql = $"SELECT sql FROM sqlite_master WHERE type='table' AND name=@tableName;"; using (SQLiteCommand cmd = new SQLiteCommand(sql,conn)) { cmd.Parameters.AddWithValue("@tableName", tableName); // 使用参数化查询防止SQL注入 using (var reader = cmd.ExecuteReader()) { return reader.Read(); // 如果读取到结果,表示表存在,返回true;否则返回false。 } } } } catch(Exception ex) { return false; } }
首次使用时要建一个数据表,sqllite是不需要建数据库的,如果运行的时候发现没有他会自己创建,下边是建表
//判断数据库中是否存在此表 bool IsTableExists = helper.TableExists("TestData");
SQLiteHelper helper = new SQLiteHelper();
//不存在则新建
if (!IsTableExists) { string sql = @"create table TestData(DataId INTEGER PRIMARY KEY AUTOINCREMENT,TestTime text not null,Template text,RefractiveIndex text)"; helper.ExecuteNonQuery(sql); }
这里我建了一个名为“TestData”表,表中有四个参数,text类型就相当于char和varchar,sqllite还是比较简洁的
然后给出一个调用的方法示例,只需传入Sql语句和参数即可
/// <summary> /// 调用方法示例 /// </summary> public void SomeMethod() { // 调用 GetDataSet 方法,传递 SQL 查询字符串和参数数组 string sql = "SELECT * FROM YourTable WHERE SomeColumn = @SomeValue"; SQLiteParameter[] pms = { new SQLiteParameter("@SomeValue", "SomeValueToSearch") }; SQLiteHelper helper = new SQLiteHelper(); // 调用 GetDataSet 方法,并获取返回的 DataSet DataSet dataSet = helper.GetDataSet(sql, pms); }
然后就可以操作得到的dataset了