博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server 数据库访问通用类(更新)
阅读量:4598 次
发布时间:2019-06-09

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

  对SQL Server数据库的操作,最常见的有如下五种:

  1.非连接式查询,获取DataTable。

  2.连接式查询,获取DataReader。

  3.查询结果只有1行1列,获取单一数据。

  4.对数据库进行增、删、改操作,进行数据编辑。

  5.判断与数据库是否已连接。(更新)

  针对以上情况,分享的一个SQL Server数据库访问通用类。该通用类可用于ASP.NET和C/S系统中开发。

 

1.非连接式查询,获取DataTable。

利用SqlDataAdapter对象的Fill()返回DataTable的结果集。

#region 执行一个查询,并返回结果集    ///     /// 执行一个查询,并返回结果集    ///     /// 要查询的SQL文本命令    /// 
查询结果集
public DataTable ExecuteDataTable(string sql) { return ExecuteDataTable(sql, CommandType.Text, null); } /// /// 执行一个查询,并返回结果集 /// /// 要查询的SQL文本命令 /// 查询语句类型,存储过程或SQL文本命令 ///
查询结果集
public DataTable ExecuteDataTable(string sql, CommandType commandType) { return ExecuteDataTable(sql, commandType, null); } /// /// 执行一个查询,并返回结果集 /// /// 要查询的SQL文本命令 /// 查询语句类型,存储过程或SQL文本命令 /// T-SQL语句或存储过程的参数组 ///
查询结果集
public DataTable ExecuteDataTable(string sql, CommandType commandType, SqlParameter[] parameters) { //实例化DataTable,用于装载查询结果集 DataTable data = new DataTable(); using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand command = new SqlCommand(sql, connection)) { //指定CommandType command.CommandType = commandType; if (parameters != null) { foreach (SqlParameter parameter in parameters) { command.Parameters.Add(parameter); } } //实例化SqlDataAdapter SqlDataAdapter adapter = new SqlDataAdapter(command); //填充DataTable adapter.Fill(data); } } return data; } #endregion

 

2.连接式查询,获取DataReader。

利用SqlReader()返回DataReader对象实例。

#region 返回一个DataReader对象实例    ///     /// 返回一个DataReader对象实例    ///     /// 要查询的SQL文本命令    /// 
DataReader对象实例
public SqlDataReader ExecuteReader(string sql) { return ExecuteReader(sql, CommandType.Text, null); } /// /// 返回一个DataReader对象实例 /// /// 要查询的SQL文本命令 /// 要执行的查询语句的类型,存储过程或SQL文本命令 ///
DataReader对象实例
public SqlDataReader ExecuteReader(string sql, CommandType commandType) { return ExecuteReader(sql, commandType, null); } /// /// 返回一个DataReader对象实例 /// /// 要查询的SQL文本命令 /// 要执行的查询语句的类型,存储过程或SQL文本命令 /// T-SQL语句或存储过程的参数数组 ///
DataReader对象实例
public SqlDataReader ExecuteReader(string sql, CommandType commandType, SqlParameter[] parameters) { SqlConnection connection = new SqlConnection(connectionString); SqlCommand command = new SqlCommand(sql, connection); if (parameters != null) { foreach (SqlParameter parameter in parameters) { command.Parameters.Add(parameter); } } connection.Open(); //参数CommandBehavior.CloseConnection表示,关闭Reader对象的同时关闭Connection对象 return command.ExecuteReader(CommandBehavior.CloseConnection); } #endregion

 

3.查询结果只有1行1列,获取单一数据。

利用SqlCommand的ExecuteScalar()。

#region 执行查询结果,返回第一行的第一列    ///     /// 执行查询结果,返回第一行的第一列    ///     /// 要查询的SQL文本命令    /// 
返回第一行的第一列
public object ExecuteScalar(string sql) { return ExecuteScalar(sql, CommandType.Text, null); } /// /// 执行查询结果,返回第一行的第一列 /// /// 要查询的SQL文本命令 /// 要执行的查询语句的类型,存储过程或SQL文本命令 ///
返回第一行的第一列
public object ExecuteScalar(string sql, CommandType commandType) { return ExecuteScalar(sql, commandType, null); } /// /// 执行查询结果,返回第一行的第一列 /// /// 要查询的SQL文本命令 /// 要执行的查询语句的类型,存储过程或SQL文本命令 /// T-SQL语句或存储过程的参数数组 ///
返回第一行的第一列
public object ExecuteScalar(string sql, CommandType commandType, SqlParameter[] parameters) { object result = null; using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand command = new SqlCommand(sql, connection)) { command.CommandType = commandType; if (parameters != null) { foreach (SqlParameter parameter in parameters) { command.Parameters.Add(parameter); } } connection.Open(); result = command.ExecuteScalar(); } } return result; } #endregion

 

4.对数据库进行增、删、改操作,进行数据编辑。

利用ExecuteNonQuery()。

#region 对数据库进行增删改操作    ///     /// 对数据库进行增删改操作    ///     /// 要执行的SQL文本命令    /// 
返回受影响的函数
public int ExecuteNonQuery(string sql) { return ExecuteNonQuery(sql, CommandType.Text, null); } /// /// 对数据库进行增删改操作 /// /// 要执行的SQL文本命令 /// 要执行的查询语句的类型,存储过程或SQL文本命令 ///
返回受影响的函数
public int ExecuteNonQuery(string sql, CommandType commandType) { return ExecuteNonQuery(sql, commandType, null); } /// /// 对数据库进行增删改操作 /// /// 要执行的SQL文本命令 /// 要执行的查询语句的类型,存储过程或SQL文本命令 /// T-SQL语句或存储过程的参数数组 ///
返回受影响的函数
public int ExecuteNonQuery(string sql, CommandType commandType, SqlParameter[] parameters) { int count = 0; using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand command = new SqlCommand(sql, connection)) { command.CommandType = commandType; if (parameters != null) { foreach (SqlParameter parameter in parameters) { command.Parameters.Add(parameter); } } connection.Open(); count = command.ExecuteNonQuery(); } } return count; } #endregion

 

5.判断与数据库是否连接(更新)

#region 判断数据库是否连接    ///     /// 判断数据库是否连接    ///     /// 
是否连接
public bool IsConnected() { SqlConnection connection = new SqlConnection(connectionString); try { if (connection.State != ConnectionState.Open) { connection.Open(); } return true; } catch { return false; } } #endregion

 

该类全部代码

using System;using System.Data;using System.Data.SqlClient;using System.Configuration;/// /// SqlDbHelper:操作SQL Server数据库的通用类/// 作者:李宝亨/// 日期:2012-03-15/// Version:1.0/// public class SqlDbHelper{    #region 字段    ///     /// 私有字段    ///     private string connectionString;    #endregion    #region 属性    ///     /// 公共属性 数据库连接字符串    ///     public string ConnectiongString    {        set { connectionString = value; }    }    #endregion    #region 构造函数    ///     /// 构造函数    ///     public SqlDbHelper()    {        //修改connectionString为项目中的数据库连接字符串        //connectionString="";    }    ///     /// 构造函数    ///     /// 数据库连接字符串    public SqlDbHelper(string strConnectionString)    {        connectionString = strConnectionString;    }    #endregion    #region 判断数据库是否连接    ///     /// 判断数据库是否连接    ///     /// 
是否连接
public bool IsConnected() { SqlConnection connection = new SqlConnection(connectionString); try { if (connection.State != ConnectionState.Open) { connection.Open(); } return true; } catch { return false; } } #endregion #region 执行一个查询,并返回结果集 /// /// 执行一个查询,并返回结果集 /// /// 要查询的SQL文本命令 ///
查询结果集
public DataTable ExecuteDataTable(string sql) { return ExecuteDataTable(sql, CommandType.Text, null); } /// /// 执行一个查询,并返回结果集 /// /// 要查询的SQL文本命令 /// 查询语句类型,存储过程或SQL文本命令 ///
查询结果集
public DataTable ExecuteDataTable(string sql, CommandType commandType) { return ExecuteDataTable(sql, commandType, null); } /// /// 执行一个查询,并返回结果集 /// /// 要查询的SQL文本命令 /// 查询语句类型,存储过程或SQL文本命令 /// T-SQL语句或存储过程的参数组 ///
查询结果集
public DataTable ExecuteDataTable(string sql, CommandType commandType, SqlParameter[] parameters) { //实例化DataTable,用于装载查询结果集 DataTable data = new DataTable(); using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand command = new SqlCommand(sql, connection)) { //指定CommandType command.CommandType = commandType; if (parameters != null) { foreach (SqlParameter parameter in parameters) { command.Parameters.Add(parameter); } } //实例化SqlDataAdapter SqlDataAdapter adapter = new SqlDataAdapter(command); //填充DataTable adapter.Fill(data); } } return data; } #endregion #region 返回一个DataReader对象实例 /// /// 返回一个DataReader对象实例 /// /// 要查询的SQL文本命令 ///
DataReader对象实例
public SqlDataReader ExecuteReader(string sql) { return ExecuteReader(sql, CommandType.Text, null); } /// /// 返回一个DataReader对象实例 /// /// 要查询的SQL文本命令 /// 要执行的查询语句的类型,存储过程或SQL文本命令 ///
DataReader对象实例
public SqlDataReader ExecuteReader(string sql, CommandType commandType) { return ExecuteReader(sql, commandType, null); } /// /// 返回一个DataReader对象实例 /// /// 要查询的SQL文本命令 /// 要执行的查询语句的类型,存储过程或SQL文本命令 /// T-SQL语句或存储过程的参数数组 ///
DataReader对象实例
public SqlDataReader ExecuteReader(string sql, CommandType commandType, SqlParameter[] parameters) { SqlConnection connection = new SqlConnection(connectionString); SqlCommand command = new SqlCommand(sql, connection); if (parameters != null) { foreach (SqlParameter parameter in parameters) { command.Parameters.Add(parameter); } } connection.Open(); //参数CommandBehavior.CloseConnection表示,关闭Reader对象的同时关闭Connection对象 return command.ExecuteReader(CommandBehavior.CloseConnection); } #endregion #region 执行查询结果,返回第一行的第一列 /// /// 执行查询结果,返回第一行的第一列 /// /// 要查询的SQL文本命令 ///
返回第一行的第一列
public object ExecuteScalar(string sql) { return ExecuteScalar(sql, CommandType.Text, null); } /// /// 执行查询结果,返回第一行的第一列 /// /// 要查询的SQL文本命令 /// 要执行的查询语句的类型,存储过程或SQL文本命令 ///
返回第一行的第一列
public object ExecuteScalar(string sql, CommandType commandType) { return ExecuteScalar(sql, commandType, null); } /// /// 执行查询结果,返回第一行的第一列 /// /// 要查询的SQL文本命令 /// 要执行的查询语句的类型,存储过程或SQL文本命令 /// T-SQL语句或存储过程的参数数组 ///
返回第一行的第一列
public object ExecuteScalar(string sql, CommandType commandType, SqlParameter[] parameters) { object result = null; using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand command = new SqlCommand(sql, connection)) { command.CommandType = commandType; if (parameters != null) { foreach (SqlParameter parameter in parameters) { command.Parameters.Add(parameter); } } connection.Open(); result = command.ExecuteScalar(); } } return result; } #endregion #region 对数据库进行增删改操作 /// /// 对数据库进行增删改操作 /// /// 要执行的SQL文本命令 ///
返回受影响的函数
public int ExecuteNonQuery(string sql) { return ExecuteNonQuery(sql, CommandType.Text, null); } /// /// 对数据库进行增删改操作 /// /// 要执行的SQL文本命令 /// 要执行的查询语句的类型,存储过程或SQL文本命令 ///
返回受影响的函数
public int ExecuteNonQuery(string sql, CommandType commandType) { return ExecuteNonQuery(sql, commandType, null); } /// /// 对数据库进行增删改操作 /// /// 要执行的SQL文本命令 /// 要执行的查询语句的类型,存储过程或SQL文本命令 /// T-SQL语句或存储过程的参数数组 ///
返回受影响的函数
public int ExecuteNonQuery(string sql, CommandType commandType, SqlParameter[] parameters) { int count = 0; using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand command = new SqlCommand(sql, connection)) { command.CommandType = commandType; if (parameters != null) { foreach (SqlParameter parameter in parameters) { command.Parameters.Add(parameter); } } connection.Open(); count = command.ExecuteNonQuery(); } } return count; } #endregion}

 

  

转载于:https://www.cnblogs.com/shixunle/p/3331094.html

你可能感兴趣的文章
xshell鼠标文本设置
查看>>
java中连接各种数据的方法
查看>>
移动端网页头部标签模板
查看>>
每日一练3
查看>>
SaltStack系列(二)之常用模块
查看>>
Day4
查看>>
OpenMobile's Application Compatibility Layer (ACL)
查看>>
html中文件类型的accept属性有哪些
查看>>
JS及JQuery对Html内容编码,Html转义
查看>>
Coursera公开课笔记: 斯坦福大学机器学习第十课“应用机器学习的建议(Advice for applying machine learning)”...
查看>>
竞价广告系统-广告检索
查看>>
强哥PHP面向对象学习笔记
查看>>
[转]基于.NET平台常用的框架整理
查看>>
Symbian (Read Inbox)读取收件箱的内容
查看>>
良好的编程规范
查看>>
struts2 入门
查看>>
.net 编译原理
查看>>
mean 快速开发和现有技术的对比分析
查看>>
Metro Style app :浏览器扩展
查看>>
linux的kernel是怎样工作的(TI_DM36X_ARM系统)(1)
查看>>