using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
/// <summary>
/// 类名:DBOperation
/// 作用:创建连接字符串,打开、关闭、释放连接,执行存储过程,
/// </summary>
public class DBOperation
{
private SqlConnection con;
private readonly string RETURNVALUE = "RETURNVALUE";
//记录错误日志位置
private static string m_fileName = "c:\\Systemlog.txt";
public DBOperation()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
#region 创建连接字符串
/// <summary>
/// CreateCon创建连接字符串
/// </summary>
/// <returns></returns>
public SqlConnection CreateCon()
{
SqlConnection con = new SqlConnection("server=61.129.47.15;database=taobao; uid=taobao;pwd=870104");
//或者使用如下方式,调用webConfig的连接字符串
//string strcon = ConfigurationManager.ConnectionStrings["yhqhjnConnectionString"].ConnectionString;
//SqlConnection con = new SqlConnection(strcon);
return con;
}
#endregion
#region 打开数据库连接.
private void Open()
{
// 打开数据库连接
if (con == null)
{
con = CreateCon();
}
if (con.State == ConnectionState.Closed)
{
try
{
///打开数据库连接
con.Open();
}
catch (Exception ex)
{
DBOperation.CreateErrorMsg(ex.Message);
}
finally
{
///关闭已经打开的数据库连接
}
}
}
#endregion
#region 关闭数据库连接
public void Close()
{
///判断连接是否已经创建
if (con != null)
{
///判断连接的状态是否打开
if (con.State == ConnectionState.Open)
{
con.Close();
}
}
}
#endregion
#region 释放资源
public void Dispose()
{
// 确认连接是否已经关闭
if (con != null)
{
con.Dispose();
con = null;
}
}
#endregion
#region 执行无参存储过程
/// <summary>
/// 执行存储过程,执行添加、删除、更新类型操作
/// </summary>
public int RunProc(string procName)
{
SqlCommand cmd = CreateProcCommand(procName, null);
///执行存储过程
cmd.ExecuteNonQuery();
///关闭数据库的连接
Close();
///返回存储过程的参数值
return (int)cmd.Parameters[RETURNVALUE].Value;
}
#endregion
#region 执行有参存储过程
/// <summary>
/// 执行存储过程,执行添加、删除、更新类型操作
/// </summary>
/// <param name="procName">存储过程名</param>
/// <param name="prams">参数列表</param>
/// <returns></returns>
public int RunProc(string procName, SqlParameter[] prams)
{
SqlCommand cmd = CreateProcCommand(procName, prams);
///执行存储过程
cmd.ExecuteNonQuery();
///关闭数据库的连接
Close();
///返回存储过程的参数值
return (int)cmd.Parameters[RETURNVALUE].Value;
}
#endregion
#region 执行无参存储过程,返回datareader对象
/// <summary>
/// 执行存储过程,执行选择类型操作
/// </summary>
/// <param name="procName">存储过程名</param>
/// <param name="dataReader">要返回的DataReader对象</param>
public void RunProc(string procName, out SqlDataReader dataReader)
{
///创建Command
SqlCommand cmd = CreateProcCommand(procName, null);
///读取数据
dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
#endregion
#region 执行有参存储过程,返回datareader对象
/// <summary>
/// 执行存储过程,执行选择类型操作
/// </summary>
public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader)
{
///创建Command
SqlCommand cmd = CreateProcCommand(procName, prams);
///读取数据
dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
#endregion
#region 执行无参存储过程,返回DataSet对象
/// <summary>
/// 执行无参存储过程,返回DataSet对象
/// </summary>
/// <param name="procName">存储过程名</param>
/// <param name="dataSet"></param>
public void RunProc(string procName, ref DataSet dataSet)
{
if (dataSet == null)
{
dataSet = new DataSet();
}
///创建SqlDataAdapter
SqlDataAdapter da = CreateProcDataAdapter(procName, null);
///读取数据
da.Fill(dataSet);
///关闭数据库的连接
Close();
}
#endregion
#region 执行有参存储过程,返回DataSet对象
/// <summary>
/// 执行有参存储过程,返回DataSet对象
/// </summary>
/// <param name="procName">存储过程名</param>
/// <param name="prams">参数列表</param>
/// <param name="dataSet">返回对象</param>
public void RunProc(string procName, SqlParameter[] prams, ref DataSet dataSet)
{
if (dataSet == null)
{
dataSet = new DataSet();
}
///创建SqlDataAdapter
SqlDataAdapter da = CreateProcDataAdapter(procName, prams);
///读取数据
da.Fill(dataSet);
///关闭数据库的连接
Close();
}
#endregion
#region 创建一个SqlCommand对象以此来执行存储过程
/// <summary>
/// 创建一个SqlCommand对象以此来执行存储过程
/// </summary>
/// <param name="procName">存储过程名</param>
/// <param name="prams">存储过程参数</param>
/// <returns></returns>
private SqlCommand CreateProcCommand(string procName, SqlParameter[] prams)
{
Open();
///设置Command
SqlCommand cmd = new SqlCommand(procName, con);
cmd.CommandType = CommandType.StoredProcedure;
///添加把存储过程的参数
if (prams != null)
{
foreach (SqlParameter parameter in prams)
{
cmd.Parameters.Add(parameter);
}
}
///添加返回参数ReturnValue
cmd.Parameters.Add(
new SqlParameter(RETURNVALUE, SqlDbType.Int, 4, ParameterDirection.ReturnValue,
false, 0, 0, string.Empty, DataRowVersion.Default, null));
///返回创建的SqlCommand对象
return cmd;
}
#endregion
#region 创建一个SqlDataAdapter对象,用此来执行存储过程
/// <summary>
/// 创建一个SqlDataAdapter对象,用此来执行存储过程
/// </summary>
/// <param name="procName">存储过程名</param>
/// <param name="prams">参数列表</param>
/// <returns></returns>
private SqlDataAdapter CreateProcDataAdapter(string procName, SqlParameter[] prams)
{
///打开数据库连接
Open();
///设置SqlDataAdapter对象
SqlDataAdapter da = new SqlDataAdapter(procName, con);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
///添加把存储过程的参数
if (prams != null)
{
foreach (SqlParameter parameter in prams)
{
da.SelectCommand.Parameters.Add(parameter);
}
}
///添加返回参数ReturnValue
da.SelectCommand.Parameters.Add(
new SqlParameter(RETURNVALUE, SqlDbType.Int, 4, ParameterDirection.ReturnValue,
false, 0, 0, string.Empty, DataRowVersion.Default, null));
///返回创建的SqlDataAdapter对象
return da;
}
#endregion
#region 生成存储过程参数
/// <summary>
/// 生成存储过程参数
/// </summary>
/// <param name="ParamName">参数名称</param>
/// <param name="DbType">参数类型</param>
/// <param name="Size">参数大小</param>
/// <param name="Direction">形式参数类型</param>
/// <param name="Value">形参名称</param>
/// <returns></returns>
public SqlParameter CreateParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
{
SqlParameter param = null;
///当参数大小为0时,不使用该参数大小值
if (Size > 0)
{
param = new SqlParameter(ParamName, DbType, Size);
}
else
{
///当参数大小为0时,不使用该参数大小值
param = new SqlParameter(ParamName, DbType);
}
///创建输出类型的参数
param.Direction = Direction;
if (!(Direction == ParameterDirection.Output && Value == null))
{
param.Value = Value;
}
///返回创建的参数
return param;
}
#endregion
#region 输入传入参数
/// <summary>
/// 输入传入参数和
/// </summary>
/// <param name="ParamName">参数名称</param>
/// <param name="DbType">参数类型</param>
/// <param name="Size">参数大小</param>
/// <param name="Value">参数值</param>
/// <returns></returns>
public SqlParameter CreateInParam(string ParamName, SqlDbType DbType, int Size, object Value)
{
return CreateParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
}
#endregion
#region 传入返回值参数
/// <summary>
/// 传入返回值参数
/// </summary>
public SqlParameter CreateOutParam(string ParamName, SqlDbType DbType, int Size)
{
return CreateParam(ParamName, DbType, Size, ParameterDirection.Output, null);
}
#endregion
#region 传入返回值参数
/// <summary>
/// 传入返回值参数
/// </summary>
public SqlParameter CreateReturnParam(string ParamName, SqlDbType DbType, int Size)
{
return CreateParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
}
#endregion
#region 将DataReader转为DataTable
/// <summary>
/// 将DataReader转为DataTable
/// </summary>
/// <param name="dataReader"></param>
/// <returns></returns>
public static DataTable ConvertdrTodt(SqlDataReader dataReader)
{
///定义DataTable
DataTable datatable = new DataTable();
///动态添加表的数据列
for (int i = 0; i < dataReader.FieldCount; i++)
{
DataColumn mydc = new DataColumn();
mydc.DataType = dataReader.GetFieldType(i);
mydc.ColumnName = dataReader.GetName(i);
datatable.Columns.Add(mydc);
}
///添加表的数据
while (dataReader.Read())
{
DataRow mydr = datatable.NewRow();
for (int i = 0; i < dataReader.FieldCount; i++)
{
mydr[i] = dataReader[i].ToString();
}
datatable.Rows.Add(mydr);
mydr = null;
}
///关闭数据读取器
dataReader.Close();
return datatable;
}
#endregion
#region 记录日志至文本文件
/// <summary>
/// 记录日志至文本文件
/// </summary>
/// <param name="message">记录的内容</param>
public static void CreateErrorMsg(string message)
{
if (File.Exists(m_fileName))
{
///如果日志文件已经存在,则直接写入日志文件
StreamWriter sr = File.AppendText(FileName);
sr.WriteLine("\n");
sr.WriteLine(DateTime.Now.ToString() + message);
sr.Close();
}
else
{
///创建日志文件
StreamWriter sr = File.CreateText(FileName);
sr.Close();
}
}
#endregion
}
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
/// <summary>
/// 类名:DBOperation
/// 作用:创建连接字符串,打开、关闭、释放连接,执行存储过程,
/// </summary>
public class DBOperation
{
private SqlConnection con;
private readonly string RETURNVALUE = "RETURNVALUE";
//记录错误日志位置
private static string m_fileName = "c:\\Systemlog.txt";
public DBOperation()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
#region 创建连接字符串
/// <summary>
/// CreateCon创建连接字符串
/// </summary>
/// <returns></returns>
public SqlConnection CreateCon()
{
SqlConnection con = new SqlConnection("server=61.129.47.15;database=taobao; uid=taobao;pwd=870104");
//或者使用如下方式,调用webConfig的连接字符串
//string strcon = ConfigurationManager.ConnectionStrings["yhqhjnConnectionString"].ConnectionString;
//SqlConnection con = new SqlConnection(strcon);
return con;
}
#endregion
#region 打开数据库连接.
private void Open()
{
// 打开数据库连接
if (con == null)
{
con = CreateCon();
}
if (con.State == ConnectionState.Closed)
{
try
{
///打开数据库连接
con.Open();
}
catch (Exception ex)
{
DBOperation.CreateErrorMsg(ex.Message);
}
finally
{
///关闭已经打开的数据库连接
}
}
}
#endregion
#region 关闭数据库连接
public void Close()
{
///判断连接是否已经创建
if (con != null)
{
///判断连接的状态是否打开
if (con.State == ConnectionState.Open)
{
con.Close();
}
}
}
#endregion
#region 释放资源
public void Dispose()
{
// 确认连接是否已经关闭
if (con != null)
{
con.Dispose();
con = null;
}
}
#endregion
#region 执行无参存储过程
/// <summary>
/// 执行存储过程,执行添加、删除、更新类型操作
/// </summary>
public int RunProc(string procName)
{
SqlCommand cmd = CreateProcCommand(procName, null);
///执行存储过程
cmd.ExecuteNonQuery();
///关闭数据库的连接
Close();
///返回存储过程的参数值
return (int)cmd.Parameters[RETURNVALUE].Value;
}
#endregion
#region 执行有参存储过程
/// <summary>
/// 执行存储过程,执行添加、删除、更新类型操作
/// </summary>
/// <param name="procName">存储过程名</param>
/// <param name="prams">参数列表</param>
/// <returns></returns>
public int RunProc(string procName, SqlParameter[] prams)
{
SqlCommand cmd = CreateProcCommand(procName, prams);
///执行存储过程
cmd.ExecuteNonQuery();
///关闭数据库的连接
Close();
///返回存储过程的参数值
return (int)cmd.Parameters[RETURNVALUE].Value;
}
#endregion
#region 执行无参存储过程,返回datareader对象
/// <summary>
/// 执行存储过程,执行选择类型操作
/// </summary>
/// <param name="procName">存储过程名</param>
/// <param name="dataReader">要返回的DataReader对象</param>
public void RunProc(string procName, out SqlDataReader dataReader)
{
///创建Command
SqlCommand cmd = CreateProcCommand(procName, null);
///读取数据
dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
#endregion
#region 执行有参存储过程,返回datareader对象
/// <summary>
/// 执行存储过程,执行选择类型操作
/// </summary>
public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader)
{
///创建Command
SqlCommand cmd = CreateProcCommand(procName, prams);
///读取数据
dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
#endregion
#region 执行无参存储过程,返回DataSet对象
/// <summary>
/// 执行无参存储过程,返回DataSet对象
/// </summary>
/// <param name="procName">存储过程名</param>
/// <param name="dataSet"></param>
public void RunProc(string procName, ref DataSet dataSet)
{
if (dataSet == null)
{
dataSet = new DataSet();
}
///创建SqlDataAdapter
SqlDataAdapter da = CreateProcDataAdapter(procName, null);
///读取数据
da.Fill(dataSet);
///关闭数据库的连接
Close();
}
#endregion
#region 执行有参存储过程,返回DataSet对象
/// <summary>
/// 执行有参存储过程,返回DataSet对象
/// </summary>
/// <param name="procName">存储过程名</param>
/// <param name="prams">参数列表</param>
/// <param name="dataSet">返回对象</param>
public void RunProc(string procName, SqlParameter[] prams, ref DataSet dataSet)
{
if (dataSet == null)
{
dataSet = new DataSet();
}
///创建SqlDataAdapter
SqlDataAdapter da = CreateProcDataAdapter(procName, prams);
///读取数据
da.Fill(dataSet);
///关闭数据库的连接
Close();
}
#endregion
#region 创建一个SqlCommand对象以此来执行存储过程
/// <summary>
/// 创建一个SqlCommand对象以此来执行存储过程
/// </summary>
/// <param name="procName">存储过程名</param>
/// <param name="prams">存储过程参数</param>
/// <returns></returns>
private SqlCommand CreateProcCommand(string procName, SqlParameter[] prams)
{
Open();
///设置Command
SqlCommand cmd = new SqlCommand(procName, con);
cmd.CommandType = CommandType.StoredProcedure;
///添加把存储过程的参数
if (prams != null)
{
foreach (SqlParameter parameter in prams)
{
cmd.Parameters.Add(parameter);
}
}
///添加返回参数ReturnValue
cmd.Parameters.Add(
new SqlParameter(RETURNVALUE, SqlDbType.Int, 4, ParameterDirection.ReturnValue,
false, 0, 0, string.Empty, DataRowVersion.Default, null));
///返回创建的SqlCommand对象
return cmd;
}
#endregion
#region 创建一个SqlDataAdapter对象,用此来执行存储过程
/// <summary>
/// 创建一个SqlDataAdapter对象,用此来执行存储过程
/// </summary>
/// <param name="procName">存储过程名</param>
/// <param name="prams">参数列表</param>
/// <returns></returns>
private SqlDataAdapter CreateProcDataAdapter(string procName, SqlParameter[] prams)
{
///打开数据库连接
Open();
///设置SqlDataAdapter对象
SqlDataAdapter da = new SqlDataAdapter(procName, con);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
///添加把存储过程的参数
if (prams != null)
{
foreach (SqlParameter parameter in prams)
{
da.SelectCommand.Parameters.Add(parameter);
}
}
///添加返回参数ReturnValue
da.SelectCommand.Parameters.Add(
new SqlParameter(RETURNVALUE, SqlDbType.Int, 4, ParameterDirection.ReturnValue,
false, 0, 0, string.Empty, DataRowVersion.Default, null));
///返回创建的SqlDataAdapter对象
return da;
}
#endregion
#region 生成存储过程参数
/// <summary>
/// 生成存储过程参数
/// </summary>
/// <param name="ParamName">参数名称</param>
/// <param name="DbType">参数类型</param>
/// <param name="Size">参数大小</param>
/// <param name="Direction">形式参数类型</param>
/// <param name="Value">形参名称</param>
/// <returns></returns>
public SqlParameter CreateParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
{
SqlParameter param = null;
///当参数大小为0时,不使用该参数大小值
if (Size > 0)
{
param = new SqlParameter(ParamName, DbType, Size);
}
else
{
///当参数大小为0时,不使用该参数大小值
param = new SqlParameter(ParamName, DbType);
}
///创建输出类型的参数
param.Direction = Direction;
if (!(Direction == ParameterDirection.Output && Value == null))
{
param.Value = Value;
}
///返回创建的参数
return param;
}
#endregion
#region 输入传入参数
/// <summary>
/// 输入传入参数和
/// </summary>
/// <param name="ParamName">参数名称</param>
/// <param name="DbType">参数类型</param>
/// <param name="Size">参数大小</param>
/// <param name="Value">参数值</param>
/// <returns></returns>
public SqlParameter CreateInParam(string ParamName, SqlDbType DbType, int Size, object Value)
{
return CreateParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
}
#endregion
#region 传入返回值参数
/// <summary>
/// 传入返回值参数
/// </summary>
public SqlParameter CreateOutParam(string ParamName, SqlDbType DbType, int Size)
{
return CreateParam(ParamName, DbType, Size, ParameterDirection.Output, null);
}
#endregion
#region 传入返回值参数
/// <summary>
/// 传入返回值参数
/// </summary>
public SqlParameter CreateReturnParam(string ParamName, SqlDbType DbType, int Size)
{
return CreateParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
}
#endregion
#region 将DataReader转为DataTable
/// <summary>
/// 将DataReader转为DataTable
/// </summary>
/// <param name="dataReader"></param>
/// <returns></returns>
public static DataTable ConvertdrTodt(SqlDataReader dataReader)
{
///定义DataTable
DataTable datatable = new DataTable();
///动态添加表的数据列
for (int i = 0; i < dataReader.FieldCount; i++)
{
DataColumn mydc = new DataColumn();
mydc.DataType = dataReader.GetFieldType(i);
mydc.ColumnName = dataReader.GetName(i);
datatable.Columns.Add(mydc);
}
///添加表的数据
while (dataReader.Read())
{
DataRow mydr = datatable.NewRow();
for (int i = 0; i < dataReader.FieldCount; i++)
{
mydr[i] = dataReader[i].ToString();
}
datatable.Rows.Add(mydr);
mydr = null;
}
///关闭数据读取器
dataReader.Close();
return datatable;
}
#endregion
#region 记录日志至文本文件
/// <summary>
/// 记录日志至文本文件
/// </summary>
/// <param name="message">记录的内容</param>
public static void CreateErrorMsg(string message)
{
if (File.Exists(m_fileName))
{
///如果日志文件已经存在,则直接写入日志文件
StreamWriter sr = File.AppendText(FileName);
sr.WriteLine("\n");
sr.WriteLine(DateTime.Now.ToString() + message);
sr.Close();
}
else
{
///创建日志文件
StreamWriter sr = File.CreateText(FileName);
sr.Close();
}
}
#endregion
}