一个数据库SQL2000的连接类,全代码
namespace OYAMA.DB
{
using System;
using System.Data;
using System.Data.SqlClient;
/// <summary>
/// 龟瞷林SQLServer计沮畐硄癟
/// </summary>
public class SQLServer /* Build by Brian@2003/4/16 */
{
private static string _ConnectionString;
private static SqlConnection _cn=null;
public static string ConnectionString
{
get { return _ConnectionString; }
set { _ConnectionString = value; }
} // 羛钡﹃
public static void OpenDatabase()
{
try
{
// 耞畐硈钡癸禜琌竒﹍て
if(_cn==null)
_cn=new SqlConnection(_ConnectionString);
// 耞硈钡篈琌ゴ秨
if(_cn.State!=ConnectionState.Open)
_cn.Open();
}
catch(Exception ee)
{
throw ee;
}
} // ゴ秨畐
public static bool CloseDatabase()
{
try
{
if(_cn.State!=ConnectionState.Closed)
_cn.Close();
if(_cn!=null)
_cn=null;
return true;
}
catch
{
//throw e;
return false;
}
} // 闽超畐
public static SqlConnection GetConnection()
{
return _cn;
}
}
using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using System.Xml;
//////////////////////////////////////////////////////////////////////////
/// 查考于VS.NET 的企业版例子:PetShop 3.0
/// 说明
/// 加了一些改动
/// 数据库链接明文写在程序配置文件里
/// <add key="ConnString" value="Data Source=(local);Max Pool Size=100;Min Pool Size=3;database=master;User ID=DBUser;Password=DBPassword;" />
/// 返回XML文档时的根开始标记为 XML_START_ROOT
///
/// 作者:Greenery2000
/// Email:Greenery2000@21cn.com
/// 开始日期: 2003-04-17
/// 最后修改日期:2003-12-18
//////////////////////////////////////////////////////////////////////////
namespace WebPlat.Components
{
public abstract class CDatabase
{
/// <summary>
/// 返回XML文档时的根开始标记
/// </summary>
public static readonly string XML_START_ROOT = "<Tree>\r\n";
/// <summary>
/// 返回XML文档时的根结束标记
/// </summary>
public static readonly string XML_END_ROOT = "\r\n</Tree>";
/// <summary>
/// 用与获取执行存储过程的返回值的参数
/// </summary>
protected static readonly string PARM_RETURN_VALUE = "@ParamReturn";
/// <summary>
/// 用于Cache存储过程的Hashtable
/// </summary>
protected static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
/// <summary>
/// 连接数据库的字符串
/// </summary>
protected static string m_sConnectString = null;
/// <summary>
/// 连接字符串
/// </summary>
/// <returns></returns>
public static string ConnectionString
{
get{
if ( m_sConnectString == null )
{
m_sConnectString = ConfigurationSettings.AppSettings["ConnString"];
}
return m_sConnectString;
}
}
/// <summary>
/// 打开新连接,执行T-SQL命令,返回受影响行数
/// </summary>
/// <param name="connString">数据库连接字符串</param>
/// <param name="cmdType">命令类型</param>
/// <param name="cmdText">命令行</param>
/// <param name="cmdParms">参数集</param>
/// <returns>受影响行数</returns>
public static int ExecuteNonQuery(CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)
{
return ExecuteNonQuery(ConnectionString, cmdType, cmdText, cmdParms);
}
/// <summary>
/// 打开新连接,执行T-SQL命令,返回受影响行数
/// </summary>
/// <param name="connString">数据库连接字符串</param>
/// <param name="cmdType">命令类型</param>
/// <param name="cmdText">命令行</param>
/// <param name="cmdParms">参数集</param>
/// <returns>受影响行数</returns>
public static int ExecuteNonQuery(string connString, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)
{
if (CLogInfo.DebugMode)
{
CLogInfo.Log(GetSQLCommand(cmdText,cmdParms), "ExecuteNonQuery");
}
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(connString)) {
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
cmd = null;
return val;
}
}
/// <summary>
/// 基于打开的事务,执行T-SQL命令,返回受影响行数
/// </summary>
/// <param name="connString">数据库连接字符串</param>
/// <param name="cmdType">命令类型</param>
/// <param name="cmdText">命令行</param>
/// <param name="cmdParms">参数集</param>
/// <returns>影响行数</returns>
public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)
{
if (CLogInfo.DebugMode)
{
CLogInfo.Log(GetSQLCommand(cmdText,cmdParms), "ExecuteNonQuery:trans");
}
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
cmd = null;
return val;
}
/// <summary>
/// 打开新连接,执行存储过程,并返回执行结果
/// </summary>
/// <param name="cmdText">存储过程名</param>
/// <param name="cmdParms">参数集</param>
/// <returns>存储过程返回值</returns>
public static int ExecuteProcedure(string cmdText, params SqlParameter[] cmdParms)
{
return ExecuteProcedure(ConnectionString, cmdText, cmdParms);
}
/// <summary>
/// 打开新连接,执行存储过程,并返回执行结果
/// </summary>
/// <param name="connString">数据库连接字符串</param>
/// <param name="cmdText">存储过程名</param>
/// <param name="cmdParms">参数集</param>
/// <returns>存储过程返回值</returns>
public static int ExecuteProcedure(string connString, string cmdText, params SqlParameter[] cmdParms)
{
if (CLogInfo.DebugMode)
{
CLogInfo.Log(GetSQLCommand(cmdText,cmdParms), "ExecuteProcedure");
}
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(connString)) {
PrepareCommand(cmd, conn, null, CommandType.StoredProcedure, cmdText, cmdParms);
// 创建返回参数
SqlParameter paramRet = cmd.Parameters.Add(PARM_RETURN_VALUE, SqlDbType.Int);
paramRet.Direction = ParameterDirection.ReturnValue;
/* int val = */cmd.ExecuteNonQuery();
int return_value = (int)paramRet.Value;
cmd.Parameters.Clear();
cmd = null;
return return_value;
}
}
/// <summary>
/// 基于打开的事务,执行存储过程,并返回执行结果
/// </summary>
/// <param name="connString">数据库连接字符串</param>
/// <param name="cmdText">存储过程名</param>
/// <param name="cmdParms">参数集</param>
/// <returns>存储过程返回值</returns>
public static int ExecuteProcedure(SqlTransaction trans, string cmdText, params SqlParameter[] cmdParms)
{
if (CLogInfo.DebugMode)
{
CLogInfo.Log(GetSQLCommand(cmdText,cmdParms), "ExecuteProcedure:trans");
}
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, trans.Connection, trans, CommandType.StoredProcedure, cmdText, cmdParms);
// 创建返回参数
SqlParameter paramRet = cmd.Parameters.Add(PARM_RETURN_VALUE, SqlDbType.Int);
paramRet.Direction = ParameterDirection.ReturnValue;
/* int val = */cmd.ExecuteNonQuery();
int return_value = (int)paramRet.Value;
cmd.Parameters.Clear();
cmd = null;
return return_value;
}
/// <summary>
/// 打开新连接,执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行。
/// </summary>
/// <param name="connString">数据库连接字符串</param>
/// <param name="cmdType">命令类型</param>
/// <param name="cmdText">T-SQL命令</param>
/// <param name="srcTable">生成的表名</param>
/// <param name="cmdParms">参数集</param>
/// <returns>结果集中第一行的第一列或空引用。</returns>
public static object ExecuteScalar(CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)
{
return ExecuteScalar(ConnectionString, cmdType, cmdText, cmdParms);
}
/// <summary>
/// 打开新连接,执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行。
/// </summary>
/// <param name="connString">数据库连接字符串</param>
/// <param name="cmdType">命令类型</param>
/// <param name="cmdText">T-SQL命令</param>
/// <param name="srcTable">生成的表名</param>
/// <param name="cmdParms">参数集</param>
/// <returns>结果集中第一行的第一列或空引用。</returns>
public static object ExecuteScalar(string connString, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)
{
if (CLogInfo.DebugMode)
{
CLogInfo.Log(GetSQLCommand(cmdText,cmdParms), "ExecuteScalar");
}
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(connString))
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
cmd = null;
return val;
}
}