博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 中使用 SQLite 数据库
阅读量:6433 次
发布时间:2019-06-23

本文共 9948 字,大约阅读时间需要 33 分钟。

SQLite 是一个轻量级别数据库, 是遵守 ACID 的关系型数据库管理系统,它包含在一个相对小的 C 库中。它是 D.RichardHipp 建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百 K 的内存就够了。它能够支持 Windows/Linux/Unix 等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java 等,还有 ODBC 接口,同样比起 Mysql、PostgreSQL 这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。

SQLite 官网:http://www.sqlite.org/

项目中使用了类库,下载地址:http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki

下载好后,在项目右键添加引用即可。

代码:

using System;using System.Configuration;using System.Data;using System.Data.SQLite;namespace Blog.Data{    ///     /// SQLiteHelper    ///     public class SQLiteHelper : IDisposable    {        #region 私有字段..        private SQLiteConnection _connection = null;        private SQLiteTransaction _transaction = null;        private bool _transacted = false;        private string _connectionString = String.Empty;        private bool _disposed = false;        private bool _autoCommit = false;        #endregion        #region 构造函数...        ///         /// 使用默认的连接字符串初始化 
类的新实例。 ///
public SQLiteHelper() : this(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString) { } /// /// 初始化 SQLiteHelper /// /// 数据库连接字符串。 public SQLiteHelper(string connectionString) { _connectionString = connectionString; _connection = new SQLiteConnection(_connectionString); _connection.Commit += new SQLiteCommitHandler(Transaction_Commit); _connection.RollBack += new EventHandler(Transaction_RollBack); } /// /// SQLiteHelper 析构函数 /// ~SQLiteHelper() { Dispose(false); } #endregion #region 方法... /// /// 打开数据库连接。 /// private void Open() { if (_connection.State == ConnectionState.Closed) { _connection.Open(); } } /// /// 关闭数据库连接。 /// private void Close() { if (_connection.State != ConnectionState.Closed) { if (_transacted && _autoCommit) { Commit(); } _connection.Close(); } } /// /// 开始数据库事务。 /// public void BeginTransaction() { _connection.BeginTransaction(); _transacted = true; } /// /// 开始数据库事务。 /// /// 事务锁级别。 public void BeginTransaction(IsolationLevel isolationLevel) { _connection.BeginTransaction(isolationLevel); _transacted = true; } /// /// 提交当前挂起的事务。 /// public void Commit() { if (_transacted) { _transaction.Commit(); _transacted = false; } } /// /// 回滚当前挂起的事务。 /// public void Rollback() { if (_transacted) { _transaction.Rollback(); _transacted = false; } } /// /// 对连接执行 Transact-SQL 语句并返回受影响的行数。 /// /// SQL 语句 ///
返回受影响的行数。
public int ExecuteNonQuery(string commandText) { int result = 0; Open(); using (SQLiteCommand sqliteCommand = new SQLiteCommand(commandText)) { result = sqliteCommand.ExecuteNonQuery(); } Close(); return result; } /// /// 对连接执行 Transact-SQL 语句并返回受影响的行数。 /// /// SQL 语句 /// 要添加的
值。 ///
返回受影响的行数。
public int ExecuteNonQuery(string commandText, SQLiteParameter[] parmeters) { int result = 0; Open(); using (SQLiteCommand sqliteCommand = new SQLiteCommand(commandText)) { sqliteCommand.Parameters.AddRange(parmeters); result = sqliteCommand.ExecuteNonQuery(); } Close(); return result; } /// /// 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。 /// /// 用于查询的 Sql 语句。 ///
结果集中第一行的第一列;如果结果集为空,则为空引用。返回的最大字符数为 2033 个字符。
public object ExecuteScalar(string commandText) { object result = null; Open(); using (SQLiteCommand sqliteCommand = new SQLiteCommand(commandText)) { result = sqliteCommand.ExecuteScalar(); } Close(); return result; } /// /// 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。 /// /// 用于查询的 Sql 语句。 /// 要添加的
值。 ///
结果集中第一行的第一列;如果结果集为空,则为空引用。返回的最大字符数为 2033 个字符。
public object ExecuteScalar(string commandText, SQLiteParameter[] parmeters) { object result = null; Open(); using (SQLiteCommand sqliteCommand = new SQLiteCommand(commandText)) { sqliteCommand.Parameters.AddRange(parmeters); result = sqliteCommand.ExecuteScalar(); } Close(); return result; } /// /// 查询数据并返回一个
。 ///
/// 用于查询的 Sql 语句。 ///
返回一个
对象。
public DataSet GetDataSet(string commandText) { return GetDataSet(commandText, string.Empty); } /// /// 查询数据并返回一个
。 ///
/// 用于查询的 Sql 语句。 /// 用于表映射的源表的名称。 ///
返回一个
对象。
public DataSet GetDataSet(string commandText, string tableName) { DataSet dataSet = new DataSet(); Open(); using (SQLiteCommand sqliteCommand = new SQLiteCommand(commandText, _connection)) { using (SQLiteDataAdapter sqlAdapter = new SQLiteDataAdapter(sqliteCommand)) { if (string.Empty.Equals(tableName)) { sqlAdapter.Fill(dataSet); } else { sqlAdapter.Fill(dataSet, tableName); } } } Close(); return dataSet; } /// /// 查询数据并返回一个
。 ///
/// 用于查询的 Sql 语句。 ///
对象。 ///
返回一个
对象。
public DataSet GetDataSet(string commandText, out SQLiteCommand sqlCommand) { return GetDataSet(commandText, string.Empty, out sqlCommand); } /// /// 查询数据并返回一个
。 ///
/// 用于查询的 Sql 语句。 /// 用于表映射的源表的名称。 ///
对象。 ///
返回一个
对象。
public DataSet GetDataSet(string commandText, string tableName, out SQLiteCommand sqlCommand) { DataSet dataSet = new DataSet(); Open(); SQLiteCommand sqliteCommand = new SQLiteCommand(commandText, _connection); using (SQLiteDataAdapter sqlAdapter = new SQLiteDataAdapter(sqliteCommand)) { sqlAdapter.Fill(dataSet); } sqlCommand = sqliteCommand; Close(); return dataSet; } /// /// 为具有指定
名称的
更新数据。 ///
/// 用于更新数据源的
。 /// 指定的一个
对象。 ///
中成功更新的行数。
public int Update(DataSet dataSet, ref SQLiteCommand sqlCommand) { return Update(dataSet, string.Empty, ref sqlCommand); } /// /// 为具有指定
名称的
更新数据。 ///
/// 用于更新数据源的
。 /// 用于表映射的源表的名称。 /// 指定的一个
对象。 ///
中成功更新的行数。
public int Update(DataSet dataSet, string tableName, ref SQLiteCommand sqlCommand) { int result = 0; Open(); using (SQLiteDataAdapter sqlAdapter = new SQLiteDataAdapter(sqlCommand)) { using (SQLiteCommandBuilder sqlCommandBuilder = new SQLiteCommandBuilder(sqlAdapter)) { if (string.Empty.Equals(tableName)) { result = sqlAdapter.Update(dataSet); } else { result = sqlAdapter.Update(dataSet, tableName); } } } Close(); return result; } /// /// 释放该实例的托管资源。 /// public virtual void Dispose() { Dispose(true); GC.SuppressFinalize(this); } /// /// 释放非托管资源。 /// /// protected void Dispose(bool disposing) { if (!_disposed) { if (disposing) { // 定义释放非托管资源 } _disposed = true; } } #endregion #region 属性... /// /// 获取数据库连接字符串。 /// public string ConnectionString { get { return _connectionString; } } /// /// 设置是否自动提交事务。 /// public bool AutoCommit { get { return _autoCommit; } set { _autoCommit = value; } } #endregion #region 事件... /// /// 事务回滚事件。 /// /// /// void Transaction_RollBack(object sender, EventArgs e) { _transacted = false; } /// /// 事务提交事件。 /// /// /// void Transaction_Commit(object sender, CommitEventArgs e) { _transacted = false; } #endregion }}

转载地址:http://gcxga.baihongyu.com/

你可能感兴趣的文章
mysql主从同步
查看>>
制作最简化的Linux系统
查看>>
我的友情链接
查看>>
使用List的remove方法需要的注意的问题
查看>>
Ansible的介绍、安装、配置及常用模块介绍
查看>>
编码列表
查看>>
eigrp 配置
查看>>
谈一谈 redis 集群
查看>>
concurrent包
查看>>
分区和格式化硬盘
查看>>
在Linux下调试Python代码的各种方法
查看>>
centos7塔建MQ服务器
查看>>
Peer authentication failed for user
查看>>
超强的.NET图像工具包VintaSoftImaging.NET SDK更新至v8.6丨75折优惠
查看>>
阿里云上Kubernetes集群联邦
查看>>
我的Git忽略文件
查看>>
洛谷2219:[HAOI2007]修筑绿化带——题解
查看>>
监控webservice信息
查看>>
a标签中href=""的几种用法(转)
查看>>
python
查看>>