📄 dbhelper.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
namespace OA.DBUtility
{
/// <summary>
/// 访问数据库的操作类,封装了所有CRUD方法
/// 此类为抽象类,不允许实例化,在应用时直接调用即可
/// 作者:杜帅华
/// 日期:2009年4月3日
/// </summary>
public abstract class DBHelper
{
//连接字符串,从配置文件里面加载
public static readonly string OAConnectionString = ConfigurationManager.ConnectionStrings["SQLConnectionString"].ConnectionString;
#region CRUD操作方法
/// <summary>
/// 从数据库中读取的方法
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="cmdText">SQL命令</param>
/// <param name="cmdType">命令类型</param>
/// <param name="cmdParams">SQL命令参数</param>
/// <returns>SqlDataReader对象</returns>
public static SqlDataReader ExecuteReader(string connectionString, string cmdText, CommandType cmdType, params SqlParameter[] cmdParams)
{
SqlCommand cmd = new SqlCommand();
SqlConnection connection = new SqlConnection(connectionString);
// 在这里使用try/catch处理是因为如果方法出现异常,则SqlDataReader就不存在
//CommandBehavior.CloseConnection的语句就不会执行,触发的异常由catch捕获。
//关闭数据库连接,并通过throw再次引发捕捉到的异常。
try
{
PreparedCommand(cmd, connection, null, cmdType, cmdText, cmdParams);
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return reader;
}
catch (Exception e)
{
connection.Close();
throw;
}
}
/// <summary>
/// 获取唯一结果集的方法
/// </summary>
/// <param name="cmdText">SQL命令</param>
/// <param name="cmdType">命令类型</param>
/// <param name="cmdParams">SQL命令参数</param>
/// <returns>唯一结果集(第一行第一列)</returns>
public static Object ExecuteScalar(string connectionString, string cmdText, CommandType cmdType, params SqlParameter[] cmdParams)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection connection = new SqlConnection(connectionString))
{
PreparedCommand(cmd, connection, null, cmdType, cmdText, cmdParams);
Object value = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return value;
}
}
/// <summary>
/// 执行更新的方法(增加,删除,修改)
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="cmdText">SQL命令</param>
/// <param name="cmdType">命令类型</param>
/// <param name="cmdParams">SQL命令参数</param>
/// <returns>所影响的行数</returns>
public static int ExecuteNonQuery(string connectionString, string cmdText, CommandType cmdType, params SqlParameter[] cmdParams)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection connection = new SqlConnection(connectionString))
{
PreparedCommand(cmd, connection, null, cmdType, cmdText, cmdParams);
int value = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return value;
}
}
/// <summary>
/// 带事务的执行更新的方法(增加,删除,修改)
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="trans">事务</param>
/// <param name="cmdText">SQL命令</param>
/// <param name="cmdType">命令类型</param>
/// <param name="cmdParams">SQL命令参数</param>
/// <returns>所影响的行数</returns>
public static int ExecuteNonQuery(string connectionString, SqlTransaction trans, string cmdText, CommandType cmdType, params SqlParameter[] cmdParams)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection connection = new SqlConnection(connectionString))
{
PreparedCommand(cmd, connection, trans, cmdType, cmdText, cmdParams); int value = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return value;
}
}
#endregion
#region 私有方法
/// <summary>
/// 设置命令属性的方法
/// </summary>
/// <param name="connection">数据库连接对象</param>
/// <param name="cmd">SQL命令对象</param>
/// <param name="cmdText">SQL语句</param>
/// <param name="trans">事务</param>
/// <param name="cmdType">命令类型</param>
/// <param name="cmdParams">命令参数</param>
private static void PreparedCommand(SqlCommand cmd, SqlConnection connection, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParams)
{
if (connection.State != ConnectionState.Open)
{
connection.Open();
}
cmd.Connection = connection;
cmd.CommandText = cmdText;
if (trans != null)
{
cmd.Transaction = trans;
}
cmd.CommandType = cmdType;
if (cmdParams != null)
{
foreach (SqlParameter param in cmdParams)
{
cmd.Parameters.Add(param);
}
}
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -