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了

posted @ 2024-01-11 14:44  给自己个晚安  阅读(13)  评论(0编辑  收藏  举报