Sqlite操作幫助類


 

sqlite幫助類

 

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.Threading.Tasks;
  6 using System.Data.SQLite;
  7 using System.Data;
  8 
  9 namespace SqliteDemo
 10 {
 11     /// <summary>
 12     /// SQLite 操作類
 13     /// </summary>
 14     class SqLiteHelper
 15     {
 16 
 17         /// <summary>
 18         /// 數據庫連接定義
 19         /// </summary>
 20         private SQLiteConnection dbConnection;
 21 
 22         /// <summary>
 23         /// SQL命令定義
 24         /// </summary>
 25         private SQLiteCommand dbCommand;
 26 
 27         /// <summary>
 28         /// 數據讀取定義
 29         /// </summary>
 30         private SQLiteDataReader dataReader;
 31 
 32         /// <summary>
 33         /// 數據讀取
 34         /// </summary>
 35         private SQLiteDataAdapter dataAdapter;
 36 
 37         /// <summary>
 38         /// 構造函數
 39         /// </summary>
 40         /// <param name="connectionString">連接SQLite庫字符串</param>
 41         public SqLiteHelper(string connectionString)
 42         {
 43             try
 44             {
 45                 dbConnection = new SQLiteConnection(connectionString);
 46                 dbConnection.Open();
 47             }
 48             catch (Exception e)
 49             {
 50                 Log(e.ToString());
 51             }
 52         }
 53         /// <summary>
 54         /// 執行SQL命令
 55         /// </summary>
 56         /// <returns>The query.</returns>
 57         /// <param name="queryString">SQL命令字符串</param>
 58         public SQLiteDataReader ExecuteQuery(string queryString)
 59         {
 60             try
 61             {
 62                 dbCommand = dbConnection.CreateCommand();
 63                 dbCommand.CommandText = queryString;
 64                 dataReader = dbCommand.ExecuteReader();
 65             }
 66             catch (Exception e)
 67             {
 68                 Log(e.Message);
 69             }
 70 
 71             return dataReader;
 72         }
 73 
 74     public DataTable GetDataTable(string tableName)
 75         {
 76             string queryString = "SELECT * FROM " + tableName;
 77             DataTable dt = new DataTable();
 78             try
 79             {
 80                 dbCommand = dbConnection.CreateCommand();
 81                 dbCommand.CommandText = queryString;
 82                 SQLiteDataAdapter ad = new SQLiteDataAdapter(dbCommand);
 83                 ad.Fill(dt);
 84             }
 85             catch (Exception e)
 86             {
 87                 Log(e.Message);
 88             }
 89             return dt;
 90         }
 91 
 92 
 93         /// <summary>
 94         /// 關閉數據庫連接
 95         /// </summary>
 96         public void CloseConnection()
 97         {
 98             //銷毀Commend
 99             if (dbCommand != null)
100             {
101                 dbCommand.Cancel();
102             }
103             dbCommand = null;
104             //銷毀Reader
105             if (dataReader != null)
106             {
107                 dataReader.Close();
108             }
109             dataReader = null;
110             //銷毀Connection
111             if (dbConnection != null)
112             {
113                 dbConnection.Close();
114             }
115             dbConnection = null;
116 
117         }
118 
119         /// <summary>
120         /// 讀取整張數據表
121         /// </summary>
122         /// <returns>The full table.</returns>
123         /// <param name="tableName">數據表名稱</param>
124         public SQLiteDataReader ReadFullTable(string tableName)
125         {
126             string queryString = "SELECT * FROM " + tableName;
127             return ExecuteQuery(queryString);
128         }
129 
130 
131         /// <summary>
132         /// 向指定數據表中插入數據
133         /// </summary>
134         /// <returns>The values.</returns>
135         /// <param name="tableName">數據表名稱</param>
136         /// <param name="values">插入的數值</param>
137         public SQLiteDataReader InsertValues(string tableName, string[] values)
138         {
139             //獲取數據表中字段數目
140             int fieldCount = ReadFullTable(tableName).FieldCount;
141             //當插入的數據長度不等於字段數目時引發異常
142             if (values.Length != fieldCount)
143             {
144                 throw new SQLiteException("values.Length!=fieldCount");
145             }
146 
147             string queryString = "INSERT INTO " + tableName + " VALUES (" + "'" + values[0] + "'";
148             for (int i = 1; i < values.Length; i++)
149             {
150                 queryString += ", " + "'" + values[i] + "'";
151             }
152             queryString += " )";
153             return ExecuteQuery(queryString);
154         }
155 
156         /// <summary>
157         /// 更新指定數據表內的數據
158         /// </summary>
159         /// <returns>The values.</returns>
160         /// <param name="tableName">數據表名稱</param>
161         /// <param name="colNames">字段名</param>
162         /// <param name="colValues">字段名對應的數據</param>
163         /// <param name="key">關鍵字</param>
164         /// <param name="value">關鍵字對應的值</param>
165         /// <param name="operation">運算符:=,<,>,...,默認“=”</param>
166         public SQLiteDataReader UpdateValues(string tableName, string[] colNames, string[] colValues, string key, string value, string operation = "=")
167         {
168             //當字段名稱和字段數值不對應時引發異常
169             if (colNames.Length != colValues.Length)
170             {
171                 throw new SQLiteException("colNames.Length!=colValues.Length");
172             }
173 
174             string queryString = "UPDATE " + tableName + " SET " + colNames[0] + "=" + "'" + colValues[0] + "'";
175             for (int i = 1; i < colValues.Length; i++)
176             {
177                 queryString += ", " + colNames[i] + "=" + "'" + colValues[i] + "'";
178             }
179             queryString += " WHERE " + key + operation + "'" + value + "'";
180             return ExecuteQuery(queryString);
181         }
182 
183         /// <summary>
184         /// 刪除指定數據表內的數據
185         /// </summary>
186         /// <returns>The values.</returns>
187         /// <param name="tableName">數據表名稱</param>
188         /// <param name="colNames">字段名</param>
189         /// <param name="colValues">字段名對應的數據</param>
190         public SQLiteDataReader DeleteValuesOR(string tableName, string[] colNames, string[] colValues, string[] operations)
191         {
192             //當字段名稱和字段數值不對應時引發異常
193             if (colNames.Length != colValues.Length || operations.Length != colNames.Length || operations.Length != colValues.Length)
194             {
195                 throw new SQLiteException("colNames.Length!=colValues.Length || operations.Length!=colNames.Length || operations.Length!=colValues.Length");
196             }
197 
198             string queryString = "DELETE FROM " + tableName + " WHERE " + colNames[0] + operations[0] + "'" + colValues[0] + "'";
199             for (int i = 1; i < colValues.Length; i++)
200             {
201                 queryString += "OR " + colNames[i] + operations[0] + "'" + colValues[i] + "'";
202             }
203             return ExecuteQuery(queryString);
204         }
205 
206         /// <summary>
207         /// 刪除指定數據表內的數據
208         /// </summary>
209         /// <returns>The values.</returns>
210         /// <param name="tableName">數據表名稱</param>
211         /// <param name="colNames">字段名</param>
212         /// <param name="colValues">字段名對應的數據</param>
213         public SQLiteDataReader DeleteValuesAND(string tableName, string[] colNames, string[] colValues, string[] operations)
214         {
215             //當字段名稱和字段數值不對應時引發異常
216             if (colNames.Length != colValues.Length || operations.Length != colNames.Length || operations.Length != colValues.Length)
217             {
218                 throw new SQLiteException("colNames.Length!=colValues.Length || operations.Length!=colNames.Length || operations.Length!=colValues.Length");
219             }
220 
221             string queryString = "DELETE FROM " + tableName + " WHERE " + colNames[0] + operations[0] + "'" + colValues[0] + "'";
222             for (int i = 1; i < colValues.Length; i++)
223             {
224                 queryString += " AND " + colNames[i] + operations[i] + "'" + colValues[i] + "'";
225             }
226             return ExecuteQuery(queryString);
227         }
228 
229 
230         /// <summary>
231         /// 創建數據表
232         /// </summary> +
233         /// <returns>The table.</returns>
234         /// <param name="tableName">數據表名</param>
235         /// <param name="colNames">字段名</param>
236         /// <param name="colTypes">字段名類型</param>
237         public SQLiteDataReader CreateTable(string tableName, string[] colNames, string[] colTypes)
238         {
239             string queryString = "CREATE TABLE IF NOT EXISTS " + tableName + "( " + colNames[0] + " " + colTypes[0];
240             for (int i = 1; i < colNames.Length; i++)
241             {
242                 queryString += ", " + colNames[i] + " " + colTypes[i];
243             }
244             queryString += "  ) ";
245             return ExecuteQuery(queryString);
246         }
247 
248         /// <summary>
249         /// Reads the table.
250         /// </summary>
251         /// <returns>The table.</returns>
252         /// <param name="tableName">Table name.</param>
253         /// <param name="items">Items.</param>
254         /// <param name="colNames">Col names.</param>
255         /// <param name="operations">Operations.</param>
256         /// <param name="colValues">Col values.</param>
257         public SQLiteDataReader ReadTable(string tableName, string[] items, string[] colNames, string[] operations, string[] colValues)
258         {
259             string queryString = "SELECT " + items[0];
260             for (int i = 1; i < items.Length; i++)
261             {
262                 queryString += ", " + items[i];
263             }
264             queryString += " FROM " + tableName + " WHERE " + colNames[0] + " " + operations[0] + " " + colValues[0];
265             for (int i = 0; i < colNames.Length; i++)
266             {
267                 queryString += " AND " + colNames[i] + " " + operations[i] + " " + colValues[0] + " ";
268             }
269             return ExecuteQuery(queryString);
270         }
271 
272         /// <summary>
273         /// 本類log
274         /// </summary>
275         /// <param name="s"></param>
276         static void Log(string s)
277         {
278             Console.WriteLine("class SqLiteHelper:::" + s);
279         }
280     }
281 }
View Code

 

 

 

控制台調用

 

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace ConsoleApplication3
 8 {
 9     class Program
10     {
11         private static SqLiteHelper sql;
12         static void Main(string[] args)
13         {
14             sql = new SqLiteHelper(@"data source=E:\620000S00000_20160707\Data.db");
15 
16             //讀取整張表
17             SQLiteDataReader reader = sql.ReadFullTable("SYS_Statistics");
18 
19             while (reader.Read())
20             {
21                 //讀取表名
22                 string tableName = reader.GetString(reader.GetOrdinal("TableName"));
23                 //讀取表的數據
24                 int Rowcount = reader.GetInt32(reader.GetOrdinal("DataStatistics"));
25                 Console.WriteLine(tableName+Rowcount);
26             }
27 
28             Console.Read();
29         }
30     }
31 }
View Code

 

 

 

 注意事項:

                1:引入System.Data.SQLite.dll 文件。 下載地址:http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

                      2:引入System.Data.SQLite.dll的同時,需要將 System.Data.SQLite.dll.config 文件放在同級目錄下。否則加載dll文件時報錯。以及System.Data.SQLite.xml。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM