zoukankan      html  css  js  c++  java
  • SQlite+dapper操作

    public class SQliteDb
    {
    
    /// <summary>
    /// 获取表所有数据
    /// </summary>
    /// <typeparam name="T">实体类型</typeparam>
    /// <param name="sql">sql语句</param>
    /// <param name="connectionString"></param>
    /// <returns>表所有数据</returns> 
    public static List<T> GetListData<T>(string sql, string connectionString) where T : class
    {
    var connstring = connectionString;
    var sqLiteb = new SQLiteConnectionStringBuilder
    {
    DataSource = connstring
    };
    var dataList = new List<T>();
    using (var con = new SQLiteConnection(sqLiteb.ToString()))
    {
    try
    {
    con.Open();
    dataList = con.Query<T>(sql).ToList();
    }
    catch (Exception ex)
    {
    LogHelper.WriteErrLog("Sqlite异常:", ex);
    
    }
    finally
    {
    con.Close();
    }
    }
    return dataList;
    }
    
    
    /// <summary>
    /// 按条件查询
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="sql"></param>
    /// <param name="param"></param>
    /// <param name="connectionString"></param> 
    /// <returns></returns>
    public static List<T> GetListData<T>(string sql, object param, string connectionString) where T : class
    {
    var connstring = connectionString;
    var sqLiteb = new SQLiteConnectionStringBuilder
    {
    DataSource = connstring
    };
    var dataList = new List<T>();
    using (var con = new SQLiteConnection(sqLiteb.ToString()))
    {
    try
    {
    con.Open();
    dataList = con.Query<T>(sql, param).ToList();
    }
    catch (Exception ex)
    {
    LogHelper.WriteErrLog("Sqlite异常:", ex);
    
    }
    finally
    {
    con.Close();
    }
    }
    return dataList;
    }
    /// <summary>
    /// 查询单个结果
    /// </summary>
    /// <param name="sql"></param>
    /// <param name="connString"></param>
    /// <returns></returns>
    public static async Task<object> GetSingleRez(string sql, string connString)
    {
    var sqLiteb = new SQLiteConnectionStringBuilder
    {
    DataSource = connString
    };
    var objRez = new object();
    await using (var con = new SQLiteConnection(sqLiteb.ToString()))
    {
    try
    {
    con.Open();
    objRez = await con.ExecuteScalarAsync(sql);
    }
    catch (Exception ex)
    {
    LogHelper.WriteErrLog("Sqlite异常:", ex);
    
    }
    finally
    {
    con.Close();
    }
    }
    return objRez;
    }
    
    
    /// <summary>
    /// 执行Sql返回行数
    /// </summary>
    /// <param name="sql"></param>
    /// <param name="connectionString"></param>
    /// <returns></returns>
    public static int ExcuteSql(string sql, string connectionString)
    {
    var connstring = connectionString;
    var sqLiteb = new SQLiteConnectionStringBuilder
    {
    DataSource = connstring
    };
    var rez = -1;
    using (var con = new SQLiteConnection(sqLiteb.ToString()))
    {
    try
    {
    con.Open();
    rez = con.Execute(sql);
    }
    catch (Exception ex)
    {
    LogHelper.WriteErrLog("Sqlite异常:", ex);
    
    }
    finally
    {
    con.Close();
    }
    }
    return rez;
    }
    
    /// <summary>
    /// 带参数执行SQL
    /// </summary>
    /// <param name="sql"></param>
    /// <param name="param"></param>
    /// <param name="connectionString"></param>
    /// <returns></returns>
    public static int ExcuteSql(string sql, object param, string connectionString)
    {
    var connstring = connectionString;
    var sqLiteb = new SQLiteConnectionStringBuilder
    {
    DataSource = connstring
    };
    var rez = -1;
    using (var con = new SQLiteConnection(sqLiteb.ToString()))
    {
    try
    {
    con.Open();
    rez = con.Execute(sql, param);
    }
    catch (Exception ex)
    {
    LogHelper.WriteErrLog("Sqlite异常:", ex);
    }
    finally
    {
    con.Close();
    }
    }
    return rez;
    }
    
     
    
    /// <summary>
    /// 批量更新、删除和插入数据
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="connectionString"></param>
    /// <param name="sql"></param>
    /// <param name="lt"></param>
    /// <returns></returns>
    public static async Task<bool> ExcuteBatch<T>(string connectionString, string sql,
    IEnumerable<T> lt) where T : class
    {
    var connstring = connectionString;
    var sqLiteb = new SQLiteConnectionStringBuilder
    {
    DataSource = connstring
    };
    var flag = false;
    await using (var con = new SQLiteConnection(sqLiteb.ToString()))
    { 
    SQLiteTransaction transaction =null;
    try
    {
    con.Open();
    transaction = con.BeginTransaction();
    var rez = await con.ExecuteAsync(sql, lt, transaction);
    transaction.Commit();
    flag = rez == lt.Count();
    }
    #pragma warning disable CA1031 // Do not catch general exception types
    catch (Exception ex)
    {
    transaction?.Rollback();
    LogHelper.WriteErrLog("Sqlite异常:", ex);
    
    }
    #pragma warning restore CA1031 // Do not catch general exception types
    finally
    {
    con.Close();
    }
    }
    
    return flag;
    }
    
    
    
    /// <summary>
    /// 单个更新、插入数据
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="connectionString"></param>
    /// <param name="sql"></param>
    /// <param name="model"></param>
    /// <returns></returns>
    public static async Task<int> ExcuteSql<T>(string connectionString, string sql, T model)
    {
    var connstring = connectionString;
    var sqLiteb = new SQLiteConnectionStringBuilder
    {
    DataSource = connstring
    };
    var rez = 0;
    await using (var con = new SQLiteConnection(sqLiteb.ToString()))
    {
    try
    {
    con.Open();
    rez = await con.ExecuteAsync(sql, model);
    }
    catch (Exception ex)
    {
    LogHelper.WriteErrLog("Sqlite未处理异常:", ex);
    
    }
    finally
    {
    con.Close();
    }
    }
    
    return rez;
    }
    }

     因Sqlite不具备并发,同一时间只能一个线程操作数据库

    public Task<int> Inser (Tmodel)
    {
    Task<int> rez;
    lock (LockObj)
    {
    rez = SQliteDbContext.ExcuteSql<T>(_sqlitePath, InsertSql, model);
    }

    return rez;
    }

    private static readonly object LockObj = new object();

  • 相关阅读:
    1657: [Usaco2006 Mar]Mooo 奶牛的歌声
    1610: [Usaco2008 Feb]Line连线游戏
    1660: [Usaco2006 Nov]Bad Hair Day 乱发节
    bzoj1207 [HNOI2004]打鼹鼠
    bzoj1046 [HAOI2007]上升序列
    bzoj3594 [Scoi2014]方伯伯的玉米田
    bzoj1878 [SDOI2009]HH的项链
    bzoj1293 [SCOI2009]生日礼物
    bzoj3211 花神游历各国
    bzoj3038 上帝造题的七分钟2
  • 原文地址:https://www.cnblogs.com/robertyao/p/13638414.html
Copyright © 2011-2022 走看看