Sqlite通用访问类改造详解
"这是一个关于Sqlite通用访问类的改造示例,用于简化数据库操作。" 在.NET环境中,Sqlite通用访问类通常是为了方便开发者对SQLite数据库进行CRUD(创建、读取、更新、删除)操作而设计的。这个改造的Sqlite通用访问类提供了一些静态方法,简化了数据库连接和命令执行的过程。下面我们将详细讨论此类的核心功能和用法。 首先,类定义中包含了几个关键成员: 1. `ConnectionStringLocalTransaction`:这是一个静态字符串变量,存储了与SQLite数据库的连接字符串。它通过`ConfigurationManager.ConnectionStrings`获取,意味着该连接字符串可以从应用程序配置文件中读取。这允许开发人员在不同环境或配置下轻松更改数据库连接设置。 2. `parmCache`:这是一个使用`Hashtable.Synchronized`创建的线程安全的缓存,用于存储参数化的SQL命令。这种缓存机制可以提高多次执行相同参数化命令时的性能。 接下来,类中定义了一个名为`ExecuteNonQuery`的方法,它接受以下参数: - `connectionString`:这是数据库连接字符串,用于建立到SQLite数据库的连接。 - `commandType`:表示SQL命令的类型,可以是`CommandType.Text`(用于执行普通的SQL语句)或`CommandType.StoredProcedure`(用于调用存储过程)。 - `commandText`:这是要执行的SQL命令文本,如一个INSERT、UPDATE或DELETE语句,或者是存储过程的名称。 - `parameters`:一个可选的`SqlParameter`数组,用于传递命令参数。 `ExecuteNonQuery`方法返回的是命令执行后影响的行数,这对于插入、更新或删除操作非常有用,因为这些操作通常不返回结果集,而是通过受影响的行数来反馈操作是否成功。 此外,此通用访问类可能还包含其他类似的方法,如`ExecuteReader`(用于执行查询并返回数据读取器)、`ExecuteScalar`(用于返回单个值)等。这些方法的实现都会利用`SqlConnection`、`SqlCommand`和`SqlDataAdapter`等.NET Framework提供的类来处理与SQLite数据库的交互。 在实际使用中,开发人员可以通过此类调用相应的方法,例如: ```csharp int result = SqlHelper.ExecuteNonQuery( ConnectionStringLocalTransaction, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24) ); ``` 这段代码将执行名为“PublishOrders”的存储过程,并传入一个名为`@prodid`的参数,其值为24。执行结果(受影响的行数)会被存储在变量`result`中。 这个改造的Sqlite通用访问类提供了一种抽象和统一的方式来处理SQLite数据库的操作,降低了代码的复杂性,提高了可维护性和可重用性。通过使用这样的类,开发者可以更加专注于业务逻辑,而不必过多地关注数据库交互的细节。
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Collections;
using System.Data.SqlClient;
/// <summary>
/// 数据库的通用访问代码
/// 此类为抽象类,不允许实例化,在应用时直接调用即可
/// </summary>
public abstract class SqlHelper
{
//获取数据库连接字符串,其属于静态变量且只读,项目中所有文档可以直接使用,但不能修改
public static readonly string ConnectionStringLocalTransaction = ConfigurationManager.ConnectionStrings["pubsConnectionString"].ConnectionString;
// 哈希表用来存储缓存的参数信息,哈希表可以存储任意类型的参数。
private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
/// <summary>
///执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。
/// 使用参数数组形式提供参数列表
/// </summary>
/// <remarks>
/// 使用示例:
/// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
/// </remarks>
/// <param name="connectionString">一个有效的数据库连接字符串</param>
/// <param name="commandType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
/// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>
public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(connectionString))
{
//通过PrePareCommand方法将参数逐个加入到SqlCommand的参数集合中
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
//清空SqlCommand中的参数列表
cmd.Parameters.Clear();
return val;
}
}
/// <summary>
///执行一条不返回结果的SqlCommand,通过一个已经存在的数据库连接
/// 使用参数数组提供参数
/// </summary>
/// <remarks>
/// 使用示例:
/// int result = ExecuteNonQuery(conn, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
/// </remarks>
/// <param name="conn">一个现有的数据库连接</param>
/// <param name="commandType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
剩余8页未读,继续阅读
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- ***+SQL三层架构体育赛事网站毕设源码
- 深入探索AzerothCore的WoTLK版本开发
- Jupyter中实现机器学习基础算法的教程
- 单变量LSTM时序预测Matlab程序及参数调优指南
- 俄G大神修改版inet下载管理器6.36.7功能详解
- 深入探索Scratch编程世界及其应用
- Aria2下载器1.37.0版本发布,支持aarch64架构
- 打造互动性洗车业务网站-HTML5源码深度解析
- 基于zxing的二维码扫描与生成树形结构示例
- 掌握TensorFlow实现CNN图像识别技术
- 苏黎世理工自主无人机系统开源项目解析
- Linux Elasticsearch 8.3.1 正式发布
- 高效销售采购库管统计软件全新发布
- 响应式网页设计:膳食营养指南HTML源码
- 心心相印婚礼主题响应式网页源码 - 构建专业前端体验
- 期末复习指南:数据结构关键操作详解