zoukankan      html  css  js  c++  java
  • C#操作SQLite数据库增、删、改、查 欢迎转载

    C#操作SQLite数据库增、删、改、查 欢迎转载

    转载记得留下链接地址哦!!!

    最近项目上要使用SQLite数据库,不怕大伙笑话毕业四年多了,一直使用Oracle或者MySQL或者SQLServer,但是真的是没有用过SQLite数据库,据说非常轻量级,但是真没有用过,于是网上大概搜索下,例子比较多,但是么有一个完整的,即使有,也五花八门。。看的人头晕,可能对于他们大神来讲这都太简单了,算求了更新一篇,新来的小伙伴请看下文,大神你就直接飘过吧!

    本例子运行效果

    正式开始吧

    1.SQLite的下载安装

    自然官网下载对应版本即可,我这里下载的是  Precompiled Binaries for 32-bit Windows (.NET Framework 4.0)  不愿意下载的 可以直接使用我下载过的  点击这里下载

    2.减压找出我们所需要的库文件   这里我们只需要俩个文件下图所示

    3.下载一个数据库管理系统来创建数据库 

    我是用的是SQLiteStudio3.1.1版本  自己下载吧  下载地址:https://sqlitestudio.pl/index.rvt?act=download

    4.创建数据库以及表

    这里创建一个简单的表 UserInfo  完了代码中会有这个数据库 在Debugin目录下

    SQLite数据库文件就一个后缀为.db的文件,就没了。。

    通过SQLiteStudio打开该数据库

    5.开始使用大伙所熟悉的VS了创建相关类

    userinfo的Mode类

     1  /// <summary>
     2     /// UserInfo:实体类(属性说明自动提取数据库字段的描述信息)
     3     /// </summary>
     4     [Serializable]
     5     public partial class UserInfo
     6     {
     7         public UserInfo()
     8         { }
     9         #region Model
    10         private int _id;
    11         private string _username;
    12         private string _pwd;
    13         private int? _age;
    14         /// <summary>
    15         /// 
    16         /// </summary>
    17         public int ID
    18         {
    19             set { _id = value; }
    20             get { return _id; }
    21         }
    22         /// <summary>
    23         /// 
    24         /// </summary>
    25         public string UserName
    26         {
    27             set { _username = value; }
    28             get { return _username; }
    29         }
    30         /// <summary>
    31         /// 
    32         /// </summary>
    33         public string Pwd
    34         {
    35             set { _pwd = value; }
    36             get { return _pwd; }
    37         }
    38         /// <summary>
    39         /// 
    40         /// </summary>
    41         public int? Age
    42         {
    43             set { _age = value; }
    44             get { return _age; }
    45         }
    46         #endregion Model
    47 
    48     }

    UserInfo 的Dal类

      1     /// <summary>
      2     /// 数据访问类:UserInfo
      3     /// </summary>
      4     public partial class UserInfo
      5     {
      6         public UserInfo()
      7         { }
      8         #region  BasicMethod
      9 
     10         /// <summary>
     11         /// 得到最大ID
     12         /// </summary>
     13         public int GetMaxId()
     14         {
     15             return DbHelperSQLite.GetMaxID("ID", "UserInfo");
     16         }
     17 
     18         /// <summary>
     19         /// 是否存在该记录
     20         /// </summary>
     21         public bool Exists(int ID)
     22         {
     23             StringBuilder strSql = new StringBuilder();
     24             strSql.Append("select count(1) from UserInfo");
     25             strSql.Append(" where ID=@ID ");
     26             SQLiteParameter[] parameters = {
     27                     new SQLiteParameter("@ID", DbType.Int32,8)          };
     28             parameters[0].Value = ID;
     29 
     30             return DbHelperSQLite.Exists(strSql.ToString(), parameters);
     31         }
     32 
     33 
     34         /// <summary>
     35         /// 增加一条数据
     36         /// </summary>
     37         public bool Add(Model.UserInfo model)
     38         {
     39             StringBuilder strSql = new StringBuilder();
     40             strSql.Append("insert into UserInfo(");
     41             strSql.Append("UserName,Pwd,Age)");
     42             strSql.Append(" values (");
     43             strSql.Append("@UserName,@Pwd,@Age)");
     44             SQLiteParameter[] parameters = {
     45                     new SQLiteParameter("@UserName", DbType.String,50),
     46                     new SQLiteParameter("@Pwd", DbType.String,25),
     47                     new SQLiteParameter("@Age", DbType.Int32,8)};
     48             parameters[0].Value = model.UserName;
     49             parameters[1].Value = model.Pwd;
     50             parameters[2].Value = model.Age;
     51 
     52             int rows = DbHelperSQLite.ExecuteSql(strSql.ToString(), parameters);
     53             if (rows > 0)
     54             {
     55                 return true;
     56             }
     57             else
     58             {
     59                 return false;
     60             }
     61         }
     62         /// <summary>
     63         /// 更新一条数据
     64         /// </summary>
     65         public bool Update(Model.UserInfo model)
     66         {
     67             StringBuilder strSql = new StringBuilder();
     68             strSql.Append("update UserInfo set ");
     69             strSql.Append("UserName=@UserName,");
     70             strSql.Append("Pwd=@Pwd,");
     71             strSql.Append("Age=@Age");
     72             strSql.Append(" where ID=@ID ");
     73             SQLiteParameter[] parameters = {
     74                     new SQLiteParameter("@UserName", DbType.String,50),
     75                     new SQLiteParameter("@Pwd", DbType.String,25),
     76                     new SQLiteParameter("@Age", DbType.Int32,8),
     77                     new SQLiteParameter("@ID", DbType.Int32,8)};
     78             parameters[0].Value = model.UserName;
     79             parameters[1].Value = model.Pwd;
     80             parameters[2].Value = model.Age;
     81             parameters[3].Value = model.ID;
     82 
     83             int rows = DbHelperSQLite.ExecuteSql(strSql.ToString(), parameters);
     84             if (rows > 0)
     85             {
     86                 return true;
     87             }
     88             else
     89             {
     90                 return false;
     91             }
     92         }
     93 
     94         /// <summary>
     95         /// 删除一条数据
     96         /// </summary>
     97         public bool Delete(int ID)
     98         {
     99 
    100             StringBuilder strSql = new StringBuilder();
    101             strSql.Append("delete from UserInfo ");
    102             strSql.Append(" where ID=@ID ");
    103             SQLiteParameter[] parameters = {
    104                     new SQLiteParameter("@ID", DbType.Int32,8)          };
    105             parameters[0].Value = ID;
    106 
    107             int rows = DbHelperSQLite.ExecuteSql(strSql.ToString(), parameters);
    108             if (rows > 0)
    109             {
    110                 return true;
    111             }
    112             else
    113             {
    114                 return false;
    115             }
    116         }
    117         /// <summary>
    118         /// 批量删除数据
    119         /// </summary>
    120         public bool DeleteList(string IDlist)
    121         {
    122             StringBuilder strSql = new StringBuilder();
    123             strSql.Append("delete from UserInfo ");
    124             strSql.Append(" where ID in (" + IDlist + ")  ");
    125             int rows = DbHelperSQLite.ExecuteSql(strSql.ToString());
    126             if (rows > 0)
    127             {
    128                 return true;
    129             }
    130             else
    131             {
    132                 return false;
    133             }
    134         }
    135 
    136 
    137         /// <summary>
    138         /// 得到一个对象实体
    139         /// </summary>
    140         public Model.UserInfo GetModel(int ID)
    141         {
    142 
    143             StringBuilder strSql = new StringBuilder();
    144             strSql.Append("select ID,UserName,Pwd,Age from UserInfo ");
    145             strSql.Append(" where ID=@ID ");
    146             SQLiteParameter[] parameters = {
    147                     new SQLiteParameter("@ID", DbType.Int32,8)          };
    148             parameters[0].Value = ID;
    149 
    150             Model.UserInfo model = new Model.UserInfo();
    151             DataSet ds = DbHelperSQLite.Query(strSql.ToString(), parameters);
    152             if (ds.Tables[0].Rows.Count > 0)
    153             {
    154                 return DataRowToModel(ds.Tables[0].Rows[0]);
    155             }
    156             else
    157             {
    158                 return null;
    159             }
    160         }
    161 
    162 
    163         /// <summary>
    164         /// 得到一个对象实体
    165         /// </summary>
    166         public Model.UserInfo DataRowToModel(DataRow row)
    167         {
    168             Model.UserInfo model = new Model.UserInfo();
    169             if (row != null)
    170             {
    171                 if (row["ID"] != null && row["ID"].ToString() != "")
    172                 {
    173                     model.ID = int.Parse(row["ID"].ToString());
    174                 }
    175                 if (row["UserName"] != null)
    176                 {
    177                     model.UserName = row["UserName"].ToString();
    178                 }
    179                 if (row["Pwd"] != null)
    180                 {
    181                     model.Pwd = row["Pwd"].ToString();
    182                 }
    183                 if (row["Age"] != null && row["Age"].ToString() != "")
    184                 {
    185                     model.Age = int.Parse(row["Age"].ToString());
    186                 }
    187             }
    188             return model;
    189         }
    190 
    191         /// <summary>
    192         /// 获得数据列表
    193         /// </summary>
    194         public DataSet GetList(string strWhere)
    195         {
    196             StringBuilder strSql = new StringBuilder();
    197             strSql.Append("select ID,UserName,Pwd,Age ");
    198             strSql.Append(" FROM UserInfo ");
    199             if (strWhere.Trim() != "")
    200             {
    201                 strSql.Append(" where " + strWhere);
    202             }
    203             return DbHelperSQLite.Query(strSql.ToString());
    204         }
    205 
    206         /// <summary>
    207         /// 获取记录总数
    208         /// </summary>
    209         public int GetRecordCount(string strWhere)
    210         {
    211             StringBuilder strSql = new StringBuilder();
    212             strSql.Append("select count(1) FROM UserInfo ");
    213             if (strWhere.Trim() != "")
    214             {
    215                 strSql.Append(" where " + strWhere);
    216             }
    217             object obj = DbHelperSQLite.GetSingle(strSql.ToString());
    218             if (obj == null)
    219             {
    220                 return 0;
    221             }
    222             else
    223             {
    224                 return Convert.ToInt32(obj);
    225             }
    226         }
    227         /// <summary>
    228         /// 分页获取数据列表
    229         /// </summary>
    230         public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex)
    231         {
    232             StringBuilder strSql = new StringBuilder();
    233             strSql.Append("SELECT * FROM ( ");
    234             strSql.Append(" SELECT ROW_NUMBER() OVER (");
    235             if (!string.IsNullOrEmpty(orderby.Trim()))
    236             {
    237                 strSql.Append("order by T." + orderby);
    238             }
    239             else
    240             {
    241                 strSql.Append("order by T.ID desc");
    242             }
    243             strSql.Append(")AS Row, T.*  from UserInfo T ");
    244             if (!string.IsNullOrEmpty(strWhere.Trim()))
    245             {
    246                 strSql.Append(" WHERE " + strWhere);
    247             }
    248             strSql.Append(" ) TT");
    249             strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex);
    250             return DbHelperSQLite.Query(strSql.ToString());
    251         }
    252 
    253         #endregion  BasicMethod
    254     }

    Userinfo的BLL类

      1     public partial class UserInfo
      2     {
      3         private readonly DAL.UserInfo dal = new DAL.UserInfo();
      4         public UserInfo()
      5         { }
      6         #region  BasicMethod
      7 
      8         /// <summary>
      9         /// 得到最大ID
     10         /// </summary>
     11         public int GetMaxId()
     12         {
     13             return dal.GetMaxId();
     14         }
     15 
     16         /// <summary>
     17         /// 是否存在该记录
     18         /// </summary>
     19         public bool Exists(int ID)
     20         {
     21             return dal.Exists(ID);
     22         }
     23 
     24         /// <summary>
     25         /// 增加一条数据
     26         /// </summary>
     27         public bool Add(Model.UserInfo model)
     28         {
     29             return dal.Add(model);
     30         }
     31 
     32         /// <summary>
     33         /// 更新一条数据
     34         /// </summary>
     35         public bool Update(Model.UserInfo model)
     36         {
     37             return dal.Update(model);
     38         }
     39 
     40         /// <summary>
     41         /// 删除一条数据
     42         /// </summary>
     43         public bool Delete(int ID)
     44         {
     45 
     46             return dal.Delete(ID);
     47         }
     48         /// <summary>
     49         /// 删除一条数据
     50         /// </summary>
     51         public bool DeleteList(string IDlist)
     52         {
     53             return dal.DeleteList(IDlist);
     54         }
     55 
     56         /// <summary>
     57         /// 得到一个对象实体
     58         /// </summary>
     59         public Model.UserInfo GetModel(int ID)
     60         {
     61 
     62             return dal.GetModel(ID);
     63         }
     64 
     65         ///// <summary>
     66         ///// 得到一个对象实体,从缓存中
     67         ///// </summary>
     68         //public Model.UserInfo GetModelByCache(int ID)
     69         //{
     70 
     71         //    string CacheKey = "UserInfoModel-" + ID;
     72         //    object objModel = Common.DataCache.GetCache(CacheKey);
     73         //    if (objModel == null)
     74         //    {
     75         //        try
     76         //        {
     77         //            objModel = dal.GetModel(ID);
     78         //            if (objModel != null)
     79         //            {
     80         //                int ModelCache = Maticsoft.Common.ConfigHelper.GetConfigInt("ModelCache");
     81         //                Maticsoft.Common.DataCache.SetCache(CacheKey, objModel, DateTime.Now.AddMinutes(ModelCache), TimeSpan.Zero);
     82         //            }
     83         //        }
     84         //        catch { }
     85         //    }
     86         //    return (Maticsoft.Model.UserInfo)objModel;
     87         //}
     88 
     89         /// <summary>
     90         /// 获得数据列表
     91         /// </summary>
     92         public DataSet GetList(string strWhere)
     93         {
     94             return dal.GetList(strWhere);
     95         }
     96         /// <summary>
     97         /// 获得数据列表
     98         /// </summary>
     99         public List<Model.UserInfo> GetModelList(string strWhere)
    100         {
    101             DataSet ds = dal.GetList(strWhere);
    102             return DataTableToList(ds.Tables[0]);
    103         }
    104         /// <summary>
    105         /// 获得数据列表
    106         /// </summary>
    107         public List<Model.UserInfo> DataTableToList(DataTable dt)
    108         {
    109             List<Model.UserInfo> modelList = new List<Model.UserInfo>();
    110             int rowsCount = dt.Rows.Count;
    111             if (rowsCount > 0)
    112             {
    113                 Model.UserInfo model;
    114                 for (int n = 0; n < rowsCount; n++)
    115                 {
    116                     model = dal.DataRowToModel(dt.Rows[n]);
    117                     if (model != null)
    118                     {
    119                         modelList.Add(model);
    120                     }
    121                 }
    122             }
    123             return modelList;
    124         }
    125 
    126         /// <summary>
    127         /// 获得数据列表
    128         /// </summary>
    129         public DataSet GetAllList()
    130         {
    131             return GetList("");
    132         }
    133 
    134         /// <summary>
    135         /// 分页获取数据列表
    136         /// </summary>
    137         public int GetRecordCount(string strWhere)
    138         {
    139             return dal.GetRecordCount(strWhere);
    140         }
    141         /// <summary>
    142         /// 分页获取数据列表
    143         /// </summary>
    144         public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex)
    145         {
    146             return dal.GetListByPage(strWhere, orderby, startIndex, endIndex);
    147         }
    148         /// <summary>
    149         /// 分页获取数据列表
    150         /// </summary>
    151         //public DataSet GetList(int PageSize,int PageIndex,string strWhere)
    152         //{
    153         //return dal.GetList(PageSize,PageIndex,strWhere);
    154         //}
    155 
    156         #endregion  BasicMethod
    157         #region  ExtensionMethod
    158 
    159         #endregion  ExtensionMethod
    160     }

    创建SQLite帮助类

      1     /// <summary>
      2     /// 数据访问基础类(基于SQLite)
      3     /// 可以用户可以修改满足自己项目的需要。
      4     /// </summary>
      5     public abstract class DbHelperSQLite
      6     {
      7         //数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.        
      8         public static string connectionString = CreateConnectionString();
      9         public DbHelperSQLite()
     10         {
     11         }
     12         private static string CreateConnectionString()
     13         {
     14 
     15             string dbName = ConfigurationManager.AppSettings["SQLiteDB"];
     16             string sqlLitePath = "data source=" + System.Environment.CurrentDirectory+"\"+dbName + ";version=3;";
     17             return sqlLitePath;
     18         }
     19 
     20         #region 公用方法
     21 
     22         public static int GetMaxID(string FieldName, string TableName)
     23         {
     24             string strsql = "select max(" + FieldName + ")+1 from " + TableName;
     25             object obj = GetSingle(strsql);
     26             if (obj == null)
     27             {
     28                 return 1;
     29             }
     30             else
     31             {
     32                 return int.Parse(obj.ToString());
     33             }
     34         }
     35         public static bool Exists(string strSql)
     36         {
     37             object obj = GetSingle(strSql);
     38             int cmdresult;
     39             if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
     40             {
     41                 cmdresult = 0;
     42             }
     43             else
     44             {
     45                 cmdresult = int.Parse(obj.ToString());
     46             }
     47             if (cmdresult == 0)
     48             {
     49                 return false;
     50             }
     51             else
     52             {
     53                 return true;
     54             }
     55         }
     56         public static bool Exists(string strSql, params SQLiteParameter[] cmdParms)
     57         {
     58             object obj = GetSingle(strSql, cmdParms);
     59             int cmdresult;
     60             if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
     61             {
     62                 cmdresult = 0;
     63             }
     64             else
     65             {
     66                 cmdresult = int.Parse(obj.ToString());
     67             }
     68             if (cmdresult == 0)
     69             {
     70                 return false;
     71             }
     72             else
     73             {
     74                 return true;
     75             }
     76         }
     77 
     78         #endregion
     79 
     80         #region  执行简单SQL语句
     81 
     82         /// <summary>
     83         /// 执行SQL语句,返回影响的记录数
     84         /// </summary>
     85         /// <param name="SQLString">SQL语句</param>
     86         /// <returns>影响的记录数</returns>
     87         public static int ExecuteSql(string SQLString)
     88         {
     89             using (SQLiteConnection connection = new SQLiteConnection(connectionString))
     90             {
     91                 using (SQLiteCommand cmd = new SQLiteCommand(SQLString, connection))
     92                 {
     93                     try
     94                     {
     95                         connection.Open();
     96                         int rows = cmd.ExecuteNonQuery();
     97                         return rows;
     98                     }
     99                     catch (System.Data.SQLite.SQLiteException E)
    100                     {
    101                         connection.Close();
    102                         throw new Exception(E.Message);
    103                     }
    104                 }
    105             }
    106         }
    107 
    108         /// <summary>
    109         /// 执行多条SQL语句,实现数据库事务。
    110         /// </summary>
    111         /// <param name="SQLStringList">多条SQL语句</param>        
    112         public static void ExecuteSqlTran(ArrayList SQLStringList)
    113         {
    114             using (SQLiteConnection conn = new SQLiteConnection(connectionString))
    115             {
    116                 conn.Open();
    117                 SQLiteCommand cmd = new SQLiteCommand();
    118                 cmd.Connection = conn;
    119                 SQLiteTransaction tx = conn.BeginTransaction();
    120                 cmd.Transaction = tx;
    121                 try
    122                 {
    123                     for (int n = 0; n < SQLStringList.Count; n++)
    124                     {
    125                         string strsql = SQLStringList[n].ToString();
    126                         if (strsql.Trim().Length > 1)
    127                         {
    128                             cmd.CommandText = strsql;
    129                             cmd.ExecuteNonQuery();
    130                         }
    131                     }
    132                     tx.Commit();
    133                 }
    134                 catch (System.Data.SQLite.SQLiteException E)
    135                 {
    136                     tx.Rollback();
    137                     throw new Exception(E.Message);
    138                 }
    139             }
    140         }
    141         /// <summary>
    142         /// 执行带一个存储过程参数的的SQL语句。
    143         /// </summary>
    144         /// <param name="SQLString">SQL语句</param>
    145         /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>
    146         /// <returns>影响的记录数</returns>
    147         public static int ExecuteSql(string SQLString, string content)
    148         {
    149             using (SQLiteConnection connection = new SQLiteConnection(connectionString))
    150             {
    151                 SQLiteCommand cmd = new SQLiteCommand(SQLString, connection);
    152                 SQLiteParameter myParameter = new SQLiteParameter("@content", DbType.String);
    153                 myParameter.Value = content;
    154                 cmd.Parameters.Add(myParameter);
    155                 try
    156                 {
    157                     connection.Open();
    158                     int rows = cmd.ExecuteNonQuery();
    159                     return rows;
    160                 }
    161                 catch (System.Data.SQLite.SQLiteException E)
    162                 {
    163                     throw new Exception(E.Message);
    164                 }
    165                 finally
    166                 {
    167                     cmd.Dispose();
    168                     connection.Close();
    169                 }
    170             }
    171         }
    172         /// <summary>
    173         /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)
    174         /// </summary>
    175         /// <param name="strSQL">SQL语句</param>
    176         /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>
    177         /// <returns>影响的记录数</returns>
    178         public static int ExecuteSqlInsertImg(string strSQL, byte[] fs)
    179         {
    180             using (SQLiteConnection connection = new SQLiteConnection(connectionString))
    181             {
    182                 SQLiteCommand cmd = new SQLiteCommand(strSQL, connection);
    183                 SQLiteParameter myParameter = new SQLiteParameter("@fs", DbType.Binary);
    184                 myParameter.Value = fs;
    185                 cmd.Parameters.Add(myParameter);
    186                 try
    187                 {
    188                     connection.Open();
    189                     int rows = cmd.ExecuteNonQuery();
    190                     return rows;
    191                 }
    192                 catch (System.Data.SQLite.SQLiteException E)
    193                 {
    194                     throw new Exception(E.Message);
    195                 }
    196                 finally
    197                 {
    198                     cmd.Dispose();
    199                     connection.Close();
    200                 }
    201             }
    202         }
    203 
    204         /// <summary>
    205         /// 执行一条计算查询结果语句,返回查询结果(object)。
    206         /// </summary>
    207         /// <param name="SQLString">计算查询结果语句</param>
    208         /// <returns>查询结果(object)</returns>
    209         public static object GetSingle(string SQLString)
    210         {
    211             using (SQLiteConnection connection = new SQLiteConnection(connectionString))
    212             {
    213                 using (SQLiteCommand cmd = new SQLiteCommand(SQLString, connection))
    214                 {
    215                     try
    216                     {
    217                         connection.Open();
    218                         object obj = cmd.ExecuteScalar();
    219                         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
    220                         {
    221                             return null;
    222                         }
    223                         else
    224                         {
    225                             return obj;
    226                         }
    227                     }
    228                     catch (System.Data.SQLite.SQLiteException e)
    229                     {
    230                         connection.Close();
    231                         throw new Exception(e.Message);
    232                     }
    233                 }
    234             }
    235         }
    236         /// <summary>
    237         /// 执行查询语句,返回SQLiteDataReader
    238         /// </summary>
    239         /// <param name="strSQL">查询语句</param>
    240         /// <returns>SQLiteDataReader</returns>
    241         public static SQLiteDataReader ExecuteReader(string strSQL)
    242         {
    243             SQLiteConnection connection = new SQLiteConnection(connectionString);
    244             SQLiteCommand cmd = new SQLiteCommand(strSQL, connection);
    245             try
    246             {
    247                 connection.Open();
    248                 SQLiteDataReader myReader = cmd.ExecuteReader();
    249                 return myReader;
    250             }
    251             catch (System.Data.SQLite.SQLiteException e)
    252             {
    253                 throw new Exception(e.Message);
    254             }
    255 
    256         }
    257         /// <summary>
    258         /// 执行查询语句,返回DataSet
    259         /// </summary>
    260         /// <param name="SQLString">查询语句</param>
    261         /// <returns>DataSet</returns>
    262         public static DataSet Query(string SQLString)
    263         {
    264             using (SQLiteConnection connection = new SQLiteConnection(connectionString))
    265             {
    266                 DataSet ds = new DataSet();
    267                 try
    268                 {
    269                     connection.Open();
    270                     SQLiteDataAdapter command = new SQLiteDataAdapter(SQLString, connection);
    271                     command.Fill(ds, "ds");
    272                 }
    273                 catch (System.Data.SQLite.SQLiteException ex)
    274                 {
    275                     throw new Exception(ex.Message);
    276                 }
    277                 return ds;
    278             }
    279         }
    280 
    281 
    282         #endregion
    283 
    284         #region 执行带参数的SQL语句
    285 
    286         /// <summary>
    287         /// 执行SQL语句,返回影响的记录数
    288         /// </summary>
    289         /// <param name="SQLString">SQL语句</param>
    290         /// <returns>影响的记录数</returns>
    291         public static int ExecuteSql(string SQLString, params SQLiteParameter[] cmdParms)
    292         {
    293             using (SQLiteConnection connection = new SQLiteConnection(connectionString))
    294             {
    295                 using (SQLiteCommand cmd = new SQLiteCommand())
    296                 {
    297                     try
    298                     {
    299                         PrepareCommand(cmd, connection, null, SQLString, cmdParms);
    300                         int rows = cmd.ExecuteNonQuery();
    301                         cmd.Parameters.Clear();
    302                         return rows;
    303                     }
    304                     catch (System.Data.SQLite.SQLiteException E)
    305                     {
    306                         throw new Exception(E.Message);
    307                     }
    308                 }
    309             }
    310         }
    311 
    312 
    313         /// <summary>
    314         /// 执行多条SQL语句,实现数据库事务。
    315         /// </summary>
    316         /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SQLiteParameter[])</param>
    317         public static void ExecuteSqlTran(Hashtable SQLStringList)
    318         {
    319             using (SQLiteConnection conn = new SQLiteConnection(connectionString))
    320             {
    321                 conn.Open();
    322                 using (SQLiteTransaction trans = conn.BeginTransaction())
    323                 {
    324                     SQLiteCommand cmd = new SQLiteCommand();
    325                     try
    326                     {
    327                         //循环
    328                         foreach (DictionaryEntry myDE in SQLStringList)
    329                         {
    330                             string cmdText = myDE.Key.ToString();
    331                             SQLiteParameter[] cmdParms = (SQLiteParameter[])myDE.Value;
    332                             PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
    333                             int val = cmd.ExecuteNonQuery();
    334                             cmd.Parameters.Clear();
    335 
    336                             trans.Commit();
    337                         }
    338                     }
    339                     catch
    340                     {
    341                         trans.Rollback();
    342                         throw;
    343                     }
    344                 }
    345             }
    346         }
    347 
    348 
    349         /// <summary>
    350         /// 执行一条计算查询结果语句,返回查询结果(object)。
    351         /// </summary>
    352         /// <param name="SQLString">计算查询结果语句</param>
    353         /// <returns>查询结果(object)</returns>
    354         public static object GetSingle(string SQLString, params SQLiteParameter[] cmdParms)
    355         {
    356             using (SQLiteConnection connection = new SQLiteConnection(connectionString))
    357             {
    358                 using (SQLiteCommand cmd = new SQLiteCommand())
    359                 {
    360                     try
    361                     {
    362                         PrepareCommand(cmd, connection, null, SQLString, cmdParms);
    363                         object obj = cmd.ExecuteScalar();
    364                         cmd.Parameters.Clear();
    365                         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
    366                         {
    367                             return null;
    368                         }
    369                         else
    370                         {
    371                             return obj;
    372                         }
    373                     }
    374                     catch (System.Data.SQLite.SQLiteException e)
    375                     {
    376                         throw new Exception(e.Message);
    377                     }
    378                 }
    379             }
    380         }
    381 
    382         /// <summary>
    383         /// 执行查询语句,返回SQLiteDataReader
    384         /// </summary>
    385         /// <param name="strSQL">查询语句</param>
    386         /// <returns>SQLiteDataReader</returns>
    387         public static SQLiteDataReader ExecuteReader(string SQLString, params SQLiteParameter[] cmdParms)
    388         {
    389             SQLiteConnection connection = new SQLiteConnection(connectionString);
    390             SQLiteCommand cmd = new SQLiteCommand();
    391             try
    392             {
    393                 PrepareCommand(cmd, connection, null, SQLString, cmdParms);
    394                 SQLiteDataReader myReader = cmd.ExecuteReader();
    395                 cmd.Parameters.Clear();
    396                 return myReader;
    397             }
    398             catch (System.Data.SQLite.SQLiteException e)
    399             {
    400                 throw new Exception(e.Message);
    401             }
    402 
    403         }
    404 
    405         /// <summary>
    406         /// 执行查询语句,返回DataSet
    407         /// </summary>
    408         /// <param name="SQLString">查询语句</param>
    409         /// <returns>DataSet</returns>
    410         public static DataSet Query(string SQLString, params SQLiteParameter[] cmdParms)
    411         {
    412             using (SQLiteConnection connection = new SQLiteConnection(connectionString))
    413             {
    414                 SQLiteCommand cmd = new SQLiteCommand();
    415                 PrepareCommand(cmd, connection, null, SQLString, cmdParms);
    416                 using (SQLiteDataAdapter da = new SQLiteDataAdapter(cmd))
    417                 {
    418                     DataSet ds = new DataSet();
    419                     try
    420                     {
    421                         da.Fill(ds, "ds");
    422                         cmd.Parameters.Clear();
    423                     }
    424                     catch (System.Data.SQLite.SQLiteException ex)
    425                     {
    426                         throw new Exception(ex.Message);
    427                     }
    428                     return ds;
    429                 }
    430             }
    431         }
    432 
    433 
    434         private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, SQLiteTransaction trans, string cmdText, SQLiteParameter[] cmdParms)
    435         {
    436             if (conn.State != ConnectionState.Open)
    437                 conn.Open();
    438             cmd.Connection = conn;
    439             cmd.CommandText = cmdText;
    440             if (trans != null)
    441                 cmd.Transaction = trans;
    442             cmd.CommandType = CommandType.Text;//cmdType;
    443             if (cmdParms != null)
    444             {
    445                 foreach (SQLiteParameter parm in cmdParms)
    446                     cmd.Parameters.Add(parm);
    447             }
    448         }
    449 
    450         #endregion
    451 
    452 
    453 
    454     }

    6.创建一个WinForm窗体用于测试

    大概是这样的,我用的是VS2017

    数据库配置文件新增App.config文件  其余的没有用,是Mysql的连接字符串,可以不用管。。。

    窗体代码大概是这样的比较简单,只是实现简单的操作,具体细节那就交个大家了。。。

     1    public partial class Form1 : Form
     2     {
     3         public Form1()
     4         {
     5             InitializeComponent();
     6         }
     7 
     8 
     9         BLL.UserInfo bll = new BLL.UserInfo();
    10        
    11 
    12         //数据库连接
    13         SQLiteConnection m_dbConnection;
    14         private void button1_Click(object sender, EventArgs e)
    15         {
    16 
    17             DataSet ds =  bll.GetAllList();
    18 
    19             this.dataGridView1.DataSource = ds.Tables[0];
    20 
    21         }
    22 
    23         int count = 0;
    24         private void button2_Click(object sender, EventArgs e)
    25         {
    26             count++;
    27             Model.UserInfo userInfo = new Model.UserInfo();
    28             userInfo.UserName = "Count" + count;
    29             userInfo.Pwd = "123456";
    30             userInfo.Age = count;
    31 
    32             bll.Add(userInfo);
    33 
    34             DataSet ds = bll.GetAllList();
    35             this.dataGridView1.DataSource = ds.Tables[0];
    36 
    37         }
    38 
    39         private void button3_Click(object sender, EventArgs e)
    40         {
    41 
    42             Model.UserInfo userInfo = new Model.UserInfo();
    43             userInfo.ID = int.Parse(this.label1.Text);
    44             userInfo.UserName = this.textBox1.Text;
    45             userInfo.Pwd = this.textBox2.Text;
    46             userInfo.Age = int.Parse(this.textBox3.Text);
    47             bll.Update(userInfo);
    48 
    49 
    50             DataSet ds = bll.GetAllList();
    51             this.dataGridView1.DataSource = ds.Tables[0];
    52 
    53 
    54         }
    55 
    56         private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
    57         {
    58             DataGridViewRow row = this.dataGridView1.CurrentRow;
    59             this.label1.Text = row.Cells[0].Value.ToString();
    60             this.textBox1.Text = row.Cells[1].Value.ToString();
    61             this.textBox2.Text = row.Cells[2].Value.ToString();
    62             this.textBox3.Text = row.Cells[3].Value.ToString();
    63 
    64 
    65         }
    66 
    67         private void button4_Click(object sender, EventArgs e)
    68         {
    69             bll.Delete(int.Parse(this.label1.Text));
    70 
    71 
    72             DataSet ds = bll.GetAllList();
    73             this.dataGridView1.DataSource = ds.Tables[0];
    74         }
    75 
    76         private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    77         {
    78          
    79             Process.Start("IExplore", "https://www.cnblogs.com/JiYF/");
    80         }
    81     }

    7.运行效果

    8.项目结构文件

     

     到这里就完了,新手自己去下载调试吧,。。。。。爱你们哟  么么哒!❥(^_-)

    源代码工程下载地址 

    或者博客留言,给出邮箱,发你!!!

    直接下载:https://files.cnblogs.com/files/JiYF/SQLiteDBTest.rar

    温馨小提示:

    SQLite版本问题,如果你使用的32位,记得项目编译采用X86   如果你是64位则采用X64  否则会提示错误信息,就酱紫。。。。。。。。。。

  • 相关阅读:
    JavaScript函数
    JavaScript数组知识点
    面向对象之继承及属性查找顺序
    面向对象二
    面向对象
    正则表达式补充
    垃圾回收机制、标记删除及分代回收
    hashlib、hmac、subprocess、configparser模块
    模块、起别名、from导入
    递归、匿名函数、内置函数
  • 原文地址:https://www.cnblogs.com/JiYF/p/11260178.html
Copyright © 2011-2022 走看看