ADO.NET操作SqlServer封装
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Xg.Star
{
/// <summary>
/// @author Star
/// @class 基础通用数据访问类=>SqlServer
/// </summary>
public class SQLHelperBase
{
// 数据库本地连接字符串=>从App.config配置文件中的connectString中读取
private static string connString = ConfigurationManager.ConnectionStrings["dbConn"].ToString();
/**
* @function 多行多列多表结果的查询=>DataSet
* @param dicTableAndSql 表名和sql语句一一对应
* @return 返回查询后的多表结果集
*/
public static DataSet GetDataSet(Dictionary<string,string> dicTableAndSql)
{
// 连接对象
SqlConnection sqlConnection = new SqlConnection(connString);
// 命令对象
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Connection = sqlConnection;
// 执行查询
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand);
// 数据集
DataSet dataSet = new DataSet();
try
{
// 打开连接
sqlConnection.Open();
// 遍历所有sql语句和表名
foreach (var tbName in dicTableAndSql.Keys)
{
// 指定对应表名的sql语句
sqlCommand.CommandText = dicTableAndSql[tbName];
// 执行查询填充数据到对应表名
sqlDataAdapter.Fill(dataSet,tbName);
}
return dataSet;
}
catch (Exception ex)
{
// 出现异常了
string errorMsg = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 执行【GetDataSet(string sql)】方法发生异常:" + ex.Message;
throw new Exception(errorMsg);
}
finally
{
// 无论如何都要关闭数据库
sqlConnection.Close();
}
}
/**
* @function 多行多列结果的查询=>DataSet
* @param cmdText 要执行的sql语句
* @param tableName 要填充的表名
* @param paramArray 要执行的sql语句中的变量参数数组
* @return 返回查询后的结果集
*/
public static DataSet GetDataSet(string cmdText, string tableName = null, SqlParameter[] paramArray = null)
{
// 连接对象
SqlConnection sqlConnection = new SqlConnection(connString);
// 命令对象
SqlCommand sqlCommand = new SqlCommand(cmdText, sqlConnection);
// 执行查询
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand);
// 数据集
DataSet dataSet = new DataSet();
if (paramArray != null)
{
sqlCommand.Parameters.AddRange(paramArray);
}
try
{
// 打开连接
sqlConnection.Open();
// 执行查询
if (!string.IsNullOrEmpty(tableName)) // 如果有传递表名才用表明
sqlDataAdapter.Fill(dataSet, tableName);
else
sqlDataAdapter.Fill(dataSet);
return dataSet;
}
catch (Exception ex)
{
// 出现异常了
string errorMsg = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 执行【GetDataSet(string sql)】方法发生异常:" + ex.Message;
throw new Exception(errorMsg);
}
finally
{
// 无论如何都要关闭数据库
sqlConnection.Close();
}
}
/**
* @function 多行多列结果的查询=>Reader
* @param cmdText 要执行的sql语句
* @param paramArray 要执行的sql语句中的变量参数数组
* @return 返回查询后的只读结果集
*/
public static SqlDataReader ExecuteReader(string cmdText, SqlParameter[] paramArray = null)
{
// 连接对象
SqlConnection sqlConnection = new SqlConnection(connString);
// 命令对象
SqlCommand sqlCommand = new SqlCommand(cmdText, sqlConnection);
if (paramArray != null)
{
sqlCommand.Parameters.AddRange(paramArray);
}
try
{
// 打开数据库
sqlConnection.Open();
// 执行查询
// CommandBehavior.CloseConnection 表示如果SqlDataReader关闭的时候 顺便关闭连接
return sqlCommand.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
// 出现异常了
string errorMsg = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 执行【ExecuteReader(string sql, SqlParameter[] paramArray = null)】方法发生异常:" + ex.Message;
throw new Exception(errorMsg);
}
}
/**
* @function 单一结果的查询
* @param cmdText 要执行的sql语句
* @param paramArray 要执行的sql语句中的变量参数数组
* @return 返回查询后的单一结果
*/
public static object ExecuteScalar(string cmdText, SqlParameter[] paramArray = null)
{
// 连接对象
SqlConnection sqlConnection = new SqlConnection(connString);
// 命令对象
SqlCommand sqlCommand = new SqlCommand(cmdText, sqlConnection);
if (paramArray != null)
{
sqlCommand.Parameters.AddRange(paramArray);
}
try
{
// 打开连接
sqlConnection.Open();
// 执行查询
return sqlCommand.ExecuteScalar();
}
catch (Exception ex)
{
// 出现异常了
string errorMsg = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 执行【ExecuteScalar(string sql)】方法发生异常:" + ex.Message;
throw new Exception(errorMsg);
}
finally
{
// 无论如何都要关闭数据库
sqlConnection.Close();
}
}
/**
* @function 更新/删除/插入数据
* @param cmdText 要执行的sql语句
* @param paramArray 要执行的sql语句中的变量参数数组
* @return 返回影响的行数
*/
public static int ExecuteNonQuery(string cmdText, SqlParameter[] paramArray = null)
{
// 连接对象
SqlConnection sqlConnection = new SqlConnection(connString);
// 命令对象
SqlCommand sqlCommand = new SqlCommand(cmdText, sqlConnection);
if (paramArray != null)
{
sqlCommand.Parameters.AddRange(paramArray);
}
try
{
// 打开连接
sqlConnection.Open();
// 执行sql语句 并且返回结果
return sqlCommand.ExecuteNonQuery();
}
catch (Exception ex)
{
// 出现异常了
string errorMsg = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 执行【ExecuteNonQuery(string sql)】方法发生异常:" + ex.Message;
throw new Exception(errorMsg);
}
finally
{
// 无论如何都要关闭数据库
sqlConnection.Close();
}
}
}
}