SQLite-C#-帮助类

  1  public static class SQLiteHelper
  2     {
  3         private static string connectionString = string.Empty;
  4
  5         #region void SetConnectionString(string datasource, string password, int version = 3) 根据数据源、密码、版本号设置连接字符串
  6         /// <summary>
  7         /// 根据数据源、密码、版本号设置连接字符串。
  8         /// </summary>
  9         /// <param name="datasource">数据源。</param>
 10         /// <param name="password">密码。</param>
 11         /// <param name="version">版本号(缺省为3)。</param>
 12         public static void SetConnectionString(string datasource, string password, int version = 3)
 13         {
 14             connectionString = string.Format("Data Source={0};Version={1};password={2};Pooling=true;FailIfMissing=false",
 15                 datasource, version, password);
 16         }
 17         #endregion
 18
 19         #region void CreateDB(string dbName) 创建一个数据库文件。如果存在同名数据库文件,则会覆盖。
 20         /// <summary>
 21         /// 创建一个数据库文件。如果存在同名数据库文件,则会覆盖。
 22         /// </summary>
 23         /// <param name="dbName">数据库文件名。为null或空串时不创建。</param>
 24         /// <param name="password">(可选)数据库密码,默认为空。</param>
 25         /// <exception cref="Exception"></exception>
 26         public static void CreateDB(string dbName)
 27         {
 28             if (!string.IsNullOrEmpty(dbName))
 29             {
 30                 try { SQLiteConnection.CreateFile(dbName); }
 31                 catch (Exception) { throw; }
 32             }
 33         }
 34         #endregion
 35
 36         #region void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, string cmdText, params SQLiteParameter[] parameters)准备操作命令参数
 37         /// <summary>
 38         /// 准备操作命令参数
 39         /// </summary>
 40         /// <param name="cmd">SQLiteCommand</param>
 41         /// <param name="conn">SQLiteConnection</param>
 42         /// <param name="cmdText">Sql命令文本</param>
 43         private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, string cmdText, params SQLiteParameter[] parameters)
 44         {
 45             if (conn.State != ConnectionState.Open)
 46                 conn.Open();
 47             cmd.Parameters.Clear();
 48             cmd.Connection = conn;
 49             cmd.CommandText = cmdText;
 50             cmd.CommandType = CommandType.Text;
 51             cmd.CommandTimeout = 30;
 52             if (parameters.Length != 0)
 53             {
 54                 cmd.Parameters.AddRange(parameters);
 55             }
 56         }
 57         #endregion
 58
 59         #region ExecuteNonQuery(string sql, params SQLiteParameter[] parameters) 对SQLite数据库执行增删改操作,返回受影响的行数。
 60         /// <summary>
 61         /// 对SQLite数据库执行增删改操作,返回受影响的行数。
 62         /// </summary>
 63         /// <param name="sql">要执行的增删改的SQL语句。</param>
 64         /// <param name="parameters">执行增删改语句所需要的参数,参数必须以它们在SQL语句中的顺序为准。</param>
 65         /// <returns></returns>
 66         /// <exception cref="Exception"></exception>
 67         public static int ExecuteNonQuery(string sql, params SQLiteParameter[] parameters)
 68         {
 69             int affectedRows = 0;
 70             using (SQLiteConnection connection = new SQLiteConnection(connectionString))
 71             {
 72                 using (SQLiteCommand command = new SQLiteCommand())
 73                 {
 74                     try
 75                     {
 76                         PrepareCommand(command, connection, sql, parameters);
 77                         affectedRows = command.ExecuteNonQuery();
 78                     }
 79                     catch (Exception) { throw; }
 80                 }
 81             }
 82             return affectedRows;
 83         }
 84         #endregion
 85
 86         #region void ExecuteNonQueryBatch(List<KeyValuePair<string, SQLiteParameter[]>> list) 批量处理数据操作语句
 87         /// <summary>
 88         /// 批量处理数据操作语句。
 89         /// </summary>
 90         /// <param name="list">SQL语句集合。</param>
 91         /// <exception cref="Exception"></exception>
 92         public static void ExecuteNonQueryBatch(List<KeyValuePair<string, SQLiteParameter[]>> list)
 93         {
 94             using (SQLiteConnection conn = new SQLiteConnection(connectionString))
 95             {
 96                 if (conn.State != ConnectionState.Open)
 97                     conn.Open();
 98                 using (SQLiteTransaction tran = conn.BeginTransaction())
 99                 {
100                     using (SQLiteCommand cmd = new SQLiteCommand(conn))
101                     {
102                         try
103                         {
104                             foreach (var item in list)
105                             {
106                                 cmd.CommandText = item.Key;
107                                 if (item.Value != null)
108                                 {
109                                     cmd.Parameters.AddRange(item.Value);
110                                 }
111                                 cmd.ExecuteNonQuery();
112                             }
113                             tran.Commit();
114                         }
115                         catch (Exception) { tran.Rollback(); throw; }
116                     }
117                 }
118             }
119         }
120         #endregion
121
122         #region object ExecuteScalar(string sql, params SQLiteParameter[] parameters) 执行查询语句,并返回第一个结果。
123         /// <summary>
124         /// 执行查询语句,并返回第一个结果。
125         /// </summary>
126         /// <param name="sql">查询语句。</param>
127         /// <returns>查询结果。</returns>
128         /// <exception cref="Exception"></exception>
129         public static object ExecuteScalar(string sql, params SQLiteParameter[] parameters)
130         {
131             using (SQLiteConnection connection = new SQLiteConnection(connectionString))
132             {
133                 using (SQLiteCommand command = new SQLiteCommand())
134                 {
135                     try
136                     {
137                         PrepareCommand(command, connection, sql, parameters);
138
139                         return command.ExecuteScalar();
140                     }
141                     catch (Exception) { throw; }
142                 }
143             }
144         }
145         #endregion
146
147         #region DataTable ExecuteQuery(string sql, params SQLiteParameter[] parameters)执行一个查询语句,返回一个包含查询结果的DataTable。
148         /// <summary>
149         /// 执行一个查询语句,返回一个包含查询结果的DataTable。
150         /// </summary>
151         /// <param name="sql">要执行的查询语句。</param>
152         /// <param name="parameters">执行SQL查询语句所需要的参数,参数必须以它们在SQL语句中的顺序为准。</param>
153         /// <returns></returns>
154         /// <exception cref="Exception"></exception>
155         public static DataTable ExecuteQuery(string sql, params SQLiteParameter[] parameters)
156         {
157             using (SQLiteConnection connection = new SQLiteConnection(connectionString))
158             {
159                 using (SQLiteCommand command = new SQLiteCommand())
160                 {
161                     PrepareCommand(command, connection, sql, parameters);
162
163                     SQLiteDataAdapter adapter = new SQLiteDataAdapter(command);
164                     DataTable data = new DataTable();
165                     try { adapter.Fill(data); }
166                     catch (Exception) { throw; }
167                     return data;
168                 }
169             }
170         }
171
172         #endregion
173
174         #region SQLiteDataReader ExecuteReader(string sql, params SQLiteParameter[] parameters) 执行一个查询语句,返回一个关联的SQLiteDataReader实例。
175         /// <summary>
176         /// 执行一个查询语句,返回一个关联的SQLiteDataReader实例。
177         /// </summary>
178         /// <param name="sql">要执行的查询语句。</param>
179         /// <param name="parameters">执行SQL查询语句所需要的参数,参数必须以它们在SQL语句中的顺序为准。</param>
180         /// <returns></returns>
181         /// <exception cref="Exception"></exception>
182         public static SQLiteDataReader ExecuteReader(string sql, params SQLiteParameter[] parameters)
183         {
184             using (SQLiteConnection connection = new SQLiteConnection(connectionString))
185             {
186                 using (SQLiteCommand command = new SQLiteCommand())
187                 {
188                     try
189                     {
190                         PrepareCommand(command, connection, sql, parameters);
191                         return command.ExecuteReader(CommandBehavior.CloseConnection);
192                     }
193                     catch (Exception) { throw; }
194                 }
195             }
196         }
197
198         #endregion
199
200         #region DataSet ExecutePager(ref int recordCount, int pageIndex, int pageSize, string cmdText, string countText, params SQLiteParameter[] parameters)分页查询
201         /// <summary>
202         /// 分页查询
203         /// </summary>
204         /// <param name="recordCount">总记录数</param>
205         /// <param name="pageIndex">页牵引</param>
206         /// <param name="pageSize">页大小</param>
207         /// <param name="cmdText">Sql命令文本</param>
208         /// <param name="countText">查询总记录数的Sql文本</param>
209         /// <param name="parameters">命令参数</param>
210         /// <returns>DataSet</returns>
211         public static DataSet ExecutePager(ref int recordCount, int pageIndex, int pageSize, string cmdText, string countText, params SQLiteParameter[] parameters)
212         {
213             if (recordCount < 0)
214                 recordCount = int.Parse(ExecuteScalar(countText).ToString());
215             var ds = new DataSet();
216             using (SQLiteConnection connection = new SQLiteConnection(connectionString))
217             {
218                 using (SQLiteCommand command = new SQLiteCommand())
219                 {
220                     PrepareCommand(command, connection, cmdText, parameters);
221
222                     SQLiteDataAdapter adapter = new SQLiteDataAdapter(command);
223                     adapter.Fill(ds, (pageIndex - 1) * pageSize, pageSize, "result");
224                 }
225                 return ds;
226             }
227         }
228         #endregion
229
230         #region DataTable GetSchema()查询数据库中的所有数据类型信息
231         /// <summary>
232         /// 查询数据库中的所有数据类型信息。
233         /// </summary>
234         /// <returns></returns>
235         /// <exception cref="Exception"></exception>
236         public static DataTable GetSchema()
237         {
238             using (SQLiteConnection connection = new SQLiteConnection(connectionString))
239             {
240                 try
241                 {
242                     connection.Open();
243                     return connection.GetSchema("TABLES");
244                 }
245                 catch (Exception) { throw; }
246             }
247         }
248         #endregion
249
250         #region int ResetDataBass() 重置自动增长列,如果执行了删除操作,自动增长列就会变的不连续,通过使用VACUUM方式重置
251         /// <summary>
252         /// 重置自动增长列,如果执行了删除操作,自动增长列就会变的不连续,通过使用VACUUM方式重置
253         /// </summary>
254         public static int ResetDataBass()
255         {
256             using (SQLiteConnection conn = new SQLiteConnection(connectionString))
257             {
258                 using (SQLiteCommand command = new SQLiteCommand())
259                 {
260                     PrepareCommand(command, conn, "vacuum");
261
262                     return command.ExecuteNonQuery();
263                 }
264             }
265         }
266         #endregion
267     }
时间: 2024-11-08 00:02:23

SQLite-C#-帮助类的相关文章

android greenDao SQLite数据库操作工具类使用

上一篇介绍了如何建立类生成工程,现在介绍如何使用. 以下是ExampleDaoGenerator工程代码,做了一些修改 /* * Copyright (C) 2011 Markus Junginger, greenrobot (http://greenrobot.de) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in com

Sqlite 数据库访问类

使用Sqlite 作为软件数据库: 实现了数据库访问类 C#  使用System.Data.Sqlite 下载地址: http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki网站中下载Precompiled Statically-Linked Binaries for 32-bit Windows (.NET Framework 4.5)或者Precompiled Statically-Linked Binarie

android SQLite使用SQLiteOpenHelper类对数据库进行操作

链接地址:http://byandby.iteye.com/blog/835580 一. SQLite介绍 SQLite是android内置的一个很小的关系型数据库. SQLite的官网是http://www.sqlite.org/,可以去下载一些文档或相关信息. 博客中有一篇有稍微详细一点的介绍,大家可以去看一下. 二. SQLiteOpenHelper的使用方法 SQLiteOpenHelper是一个辅助类来管理数据库的创建和版本. 可以通过继承这个类,实现它的一些方法来对数据库进行一些操作

SQLite数据库操作类

[csharp] view plaincopy 首先:添加配置<add key="SQLString" value="~\demo.db"/> [csharp] view plaincopy [csharp] view plaincopy /************************************** * 作用:SQLLite Server操作实现 **************************************/ using

C#操作SQLite数据库帮助类——SQLiteHelper

using System; using System.Collections.Generic; using System.Data.SQLite; using System.Data; namespace Com.ZCWL.Rock.Helper { public class SQLiteHelper { private static string connectionString = string.Empty; /// <summary> /// 根据数据源.密码.版本号设置连接字符串. /

【原创】android——SQLite实现简单的注册登陆(已经美化)

1,Main_activity的xmL配置 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_pa

SQLite 数据类型

SQLite 数据类型 参考: SQLite 数据类型 | 菜鸟教程http://www.runoob.com/sqlite/sqlite-data-types.html SQLite 数据类型是一个用来指定任何对象的数据类型的属性.SQLite 中的每一列,每个变量和表达式都有相关的数据类型. 您可以在创建表的同时使用这些数据类型.SQLite 使用一个更普遍的动态类型系统.在 SQLite 中,值的数据类型与值本身是相关的,而不是与它的容器相关. SQLite 存储类 每个存储在 SQLit

SQLite:自学笔记(1)——快速入门

SQLite的安装和入门 了解 简单了解SQLite SQLite是一种轻巧迷你的关系型数据库管理系统.它的特点如下: 不需要一个单独的服务器进程或操作的系统(无服务器的). SQLite 不需要配置,这意味着不需要安装或管理. 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件. SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB. SQLite 是自给自足的,这意味着不需要任何外部的依赖. SQLite 事务是完全兼容 AC

(数据库)SQLite的使用

数据库的应用相当广泛,可以应用在Java.Android.IOS.Windows等所有主要的操作系统上 SQLite虽然是轻量级的小引擎,但是能够支持高达2TB大小的数据库,其以单个文件的形式存在,以B-Tree的数据结构形式存储在磁盘,具有轻量级.独立性.隔离性.跨平台.多语言及接口.安全性等特点. 多个进程可以再统一时间从统一数据库读取数据,但只有一个可以写入数据 关于SQLite的数据类型:SQlite支持NULL(空值).INTEGER(整形值).REAL(浮点值).TEXT(字符串值)

android开发之路09(浅谈SQLite数据库01)

1.SQLite数据库: SQLite 是一个开源的嵌入式关系数据库,实现自包容.零配置.支持事务的SQL数据库引擎. 其特点是高度便携.使 用方便.结构紧凑.高效.可靠. 与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下 - 只要确保 SQLite的二进制文件存在即可开始创建.连接和使用数据库. 对于SDK来讲,已经内置了SQLite的程序,因此我们不需要在SQLite官网上下载.一般数据库采用的都是静态的数据类 型,而我们的SQLite数据库采用的是动态数据库,会