• 一个简单的C# Sqlite帮助类


      1   public class SqliteHelper
      2     {
      3         private readonly string connectionStr;
      4         public SqliteHelper(string dbPath)
      5         {
      6             if (System.IO.File.Exists(dbPath))
      7                 this.connectionStr = $"Data Source = {dbPath}";
      8             else
      9                 throw new ArgumentException($"数据库路径{dbPath}不存在!");
     10         }
     11         /// <summary>
     12         /// return an DataTable 
     13         /// </summary>
     14         /// <param name="commandText">a SQL clause like "SELECT * FROM DJDY_NaturalResources"</param>
     15         /// <param name="tableName"></param>
     16         /// <returns></returns>
     17         public DataTable ExcuteDataTable(string commandText,string tableName)
     18         {
     19             using SQLiteConnection connection = new SQLiteConnection(this.connectionStr);
     20             using SQLiteCommand command = new SQLiteCommand(connection);
     21             command.CommandText = commandText;
     22             DataTable table = new DataTable(tableName);
     23             SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(command);
     24             dataAdapter.Fill(table);
     25             return table;
     26         }
     27 
     28         /// <summary>
     29         /// 
     30         /// </summary>
     31         /// <param name="commandTexts">a SQL clause like "SELECT * FROM DJDY_Info;",the last word must be table name! CUZ it will be name of ds.Table.<para />
     32         /// e.g. get table name from SQl clause "SELECT * FROM DJDY_Info;",the result is "DJDY_Info".
     33         /// </param>
     34         /// <returns></returns>
     35         public DataSet ExcuteDataSet (params string[] commandTexts)
     36         {
     37             using SQLiteConnection connection = new SQLiteConnection(this.connectionStr);
     38             using SQLiteCommand command = new SQLiteCommand(connection);
     39             StringBuilder @string = new StringBuilder();
     40             List<string> names = new List<string>();
     41             foreach (var item in commandTexts)
     42             {
     43                 @string.Append(item);
     44                 names.Add(item.ToLower().Split(new string[] { "from" }, StringSplitOptions.RemoveEmptyEntries)[1].Replace(";","").Trim());
     45             }
     46             command.CommandText = @string.ToString();
     47             SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(command);
     48             for (int i = 0; i < names.Count; i++)
     49             {
     50                 string tableName = i == 0 ? "Table" : $"Table{i}";
     51                 dataAdapter.TableMappings.Add(tableName, names[i]);
     52                 //System.Windows.Forms.MessageBox.Show(tableName + "__" + names[i]);
     53             }
     54             DataSet dataSet = new DataSet();
     55             dataAdapter.Fill(dataSet);
     56             return dataSet;
     57         }
     58         /// <summary>
     59         /// 
     60         /// </summary>
     61         /// <param name="commandTexts"> a sql clause.<para />
     62         ///  inser clause like "INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]  VALUES(value1, value2, value3,...valueN);",[] means this param is optional.<para />
     63         ///  if insert vale contains all columns, you can use insert clause like "INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);".
     64         /// </param>
     65         public void ExcuteNoneQuery(params string[] commandTexts)
     66         {
     67             using SQLiteConnection connection = new SQLiteConnection(this.connectionStr);
     68             connection.Open();
     69             using SQLiteCommand command = new SQLiteCommand(connection);
     70             using SQLiteTransaction transaction = connection.BeginTransaction();
     71             command.Transaction = transaction;
     72             try
     73             {
     74                 foreach (var item in commandTexts)
     75                 {
     76                     command.CommandText = item;
     77                     command.ExecuteNonQuery();
     78                 }
     79                 transaction.Commit();
     80             }
     81             catch (SQLiteException exp)
     82             {
     83                 transaction.Rollback();
     84                 throw new Exception("SQL语句执行错误。", exp);
     85             }
     86             finally
     87             { connection.Close(); }
     88         }
     89         /// <summary>
     90         /// clear all tables data.
     91         /// </summary>
     92         /// <returns></returns>
     93         public bool ClearTables()
     94         {
     95             using SQLiteConnection connection = new SQLiteConnection(this.connectionStr);
     96             connection.Open();
     97             using SQLiteCommand command = new SQLiteCommand(connection);
     98             using SQLiteTransaction transaction = connection.BeginTransaction();
     99             command.Transaction = transaction;
    100             DataTable dataTable = new DataTable("TableNames");
    101             string commandText = "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name";
    102             command.CommandText = commandText;
    103             SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(command);
    104             dataAdapter.Fill(dataTable);
    105             command.Reset();
    106             try
    107             {
    108                 for (int i = 0; i < dataTable.Rows.Count; i++)
    109                 {
    110                     commandText = $"delete from {dataTable.Rows[i][0].ToString()}";
    111                     command.CommandText = commandText;
    112                     command.ExecuteNonQuery();
    113                 }
    114                 transaction.Commit();
    115                 return true;
    116             }
    117             catch (SQLiteException exp)
    118             {
    119                 transaction.Rollback();
    120                 throw new Exception("SQL语句执行错误。", exp);
    121             }
    122             finally
    123             { connection.Close(); }
    124         }
    125         /// <summary>
    126         /// test for whether the given table have records.
    127         /// </summary>
    128         /// <param name="tableName"></param>
    129         /// <returns> if records==0 true,else false</returns>
    130         public bool TableNotHaveRecord(string tableName)
    131         {
    132             bool rslt=false;
    133             using SQLiteConnection connection = new SQLiteConnection(this.connectionStr);
    134             connection.Open();
    135             try
    136             {
    137                 using SQLiteCommand command = new SQLiteCommand(connection);
    138                 string commandText = $"select count(*) from {tableName}";
    139                 command.CommandText = commandText;
    140                 rslt = Convert.ToInt32(command.ExecuteScalar()) == 0;
    141                 return rslt;
    142             }
    143             catch (SQLiteException exp)
    144             {
    145                 throw new Exception("SQL语句执行错误。", exp);
    146             }
    147             finally
    148             {
    149                 connection.Close();
    150             }
    151         }
    152     }

                            //if (djdyh_List.Contains(djdyh))
                            //{
                            //    commandTextZY[i - 1] = $"UPDATE DJDY_SHLZY SET BHTBSL={hlsmSL_NumberAndArea.Number}, SMMJ={Math.Round(hlsmSL_NumberAndArea.Area * 0.0001, 4)} WHERE  DJDYH = '{djdyh}' AND SLLX ='河流水面';" +
                            //        $"UPDATE DJDY_SHLZY SET BHTBSL={hpsmSL_NumberAndArea.Number}, SMMJ={Math.Round(hpsmSL_NumberAndArea.Area * 0.0001, 4)} WHERE  DJDYH = '{djdyh}' AND SLLX ='湖泊水面';" +
                            //        $"UPDATE DJDY_SHLZY SET BHTBSL={sksmSL_NumberAndArea.Number}, SMMJ={Math.Round(sksmSL_NumberAndArea.Area * 0.0001, 4)} WHERE  DJDYH = '{djdyh}' AND SLLX ='水库水面';" +
                            //        $"UPDATE DJDY_SHLZY SET BHTBSL={bcjxSL_NumberAndArea.Number}, SMMJ={Math.Round(bcjxSL_NumberAndArea.Area * 0.0001, 4)} WHERE  DJDYH = '{djdyh}' AND SLLX ='冰川及永久积雪';" +
                            //        //
                            //else
                            //{
                            //    commandTextZY[i - 1] = $"INSERT  INTO DJDY_SHLZY (DJDYH,SLLX,BHTBSL,SMMJ) VALUES ('{djdyh}','河流水面',{hlsmSL_NumberAndArea.Number},{Math.Round(hlsmSL_NumberAndArea.Area * 0.0001, 4)})," +
                            //        $"('{djdyh}','湖泊水面',{hpsmSL_NumberAndArea.Number},{Math.Round(hpsmSL_NumberAndArea.Area * 0.0001, 4)})," +
                            //        $"('{djdyh}','水库水面',{sksmSL_NumberAndArea.Number},{Math.Round(sksmSL_NumberAndArea.Area * 0.0001, 4)})," +
                            //        $"('{djdyh}','冰川及永久积雪',{bcjxSL_NumberAndArea.Number},{Math.Round(bcjxSL_NumberAndArea.Area * 0.0001, 4)});" +

  • 相关阅读:
    windbg学习.expr和masm表达式
    ThisCall调用分析
    windbg学习 gc j(Execute IfElse).if
    windbg学习¥{} Alias Interpreter 别名解释器
    windbg学习!vadump和.hh和!vprotc
    windbg学习 .lines
    windbg学习条件断点
    $<, $><, $$<, $$><, $$>a< (Run Script File)
    windbg学习?? 和 ?
    vimbook–OPL –official publications library
  • 原文地址:https://www.cnblogs.com/yzhyingcool/p/12859216.html
Copyright © 2020-2023  润新知