using System; 
using System.Data; 
using System.Data.SqlClient; namespace SysClassLibrary 

/// <summary> 
/// DataAccess 的摘要说明。 
/// <description>数据处理基类,调用方式:DataAccess.DataSet((string)sqlstr);或者DataAccess.DataSet((string)sqlstr,ref DataSet ds); </description> 
/// </summary> 
public class DataAccess 

#region 属性 
protected static SqlConnection conn=new SqlConnection(); 
protected static SqlCommand comm=new SqlCommand(); 
#endregion 
public DataAccess() 

//init(); 

#region 内部函数 静态方法中不会执行DataAccess()构造函数 /// <summary> 
/// 打开数据库连接 
/// </summary> 
private static void openConnection() 

if (conn.State == ConnectionState.Closed) 

//SysConfig.ConnectionString 为系统配置类中连接字符串,如:"server=localhost;database=databasename;uid=sa;pwd=;" conn.ConnectionString = SysConfig.ConnectionString ; 
comm.Connection =conn; 
try 

conn.Open(); 

catch(Exception e) 

throw new Exception(e.Message); 



/// <summary> 
/// 关闭当前数据库连接 
/// </summary> 
private static void closeConnection() 

if(conn.State == ConnectionState.Open) 
conn.Close(); 
conn.Dispose(); 
comm.Dispose(); 

#endregion 
/// <summary> 
/// 执行Sql查询语句 
/// </summary> 
/// <param name="sqlstr">传入的Sql语句</param> 
public static void ExecuteSql(string sqlstr) 

try 

openConnection(); 
comm.CommandType =CommandType.Text ; 
comm.CommandText =sqlstr; 
comm.ExecuteNonQuery(); 

catch(Exception e) 

throw new Exception(e.Message); 

finally 

closeConnection(); 

} /// <summary> 
/// 执行存储过程 
/// </summary> 
/// <param name="procName">存储过程名</param> 
/// <param name="coll">SqlParameters 集合</param> 
public static void ExecutePorcedure(string procName,SqlParameter[] coll) 

try 

openConnection(); 
for(int i=0;i<coll.Length;i++) 

comm.Parameters .Add(coll[i]); 

comm.CommandType=CommandType.StoredProcedure ; 
comm.CommandText =procName; 
comm.ExecuteNonQuery(); 

catch(Exception e) 

throw new Exception(e.Message); 

finally 

comm.Parameters.Clear(); 
closeConnection(); 

} /// <summary> 
/// 执行存储过程并返回数据集 
/// </summary> 
/// <param name="procName">存储过程名称</param> 
/// <param name="coll">SqlParameter集合</param> 
/// <param name="ds">DataSet </param> 
public static void ExecutePorcedure(string procName,SqlParameter[] coll,ref DataSet ds) 

try 

SqlDataAdapter da=new SqlDataAdapter(); 
openConnection(); 
for(int i=0;i<coll.Length;i++) 

comm.Parameters .Add(coll[i]); 

comm.CommandType=CommandType.StoredProcedure ; 
comm.CommandText =procName; da.SelectCommand =comm; 
da.Fill(ds); 

catch(Exception e) 

throw new Exception(e.Message); 

finally 

comm.Parameters.Clear(); 
closeConnection(); 

} /// <summary> 
/// 执行Sql查询语句并返回第一行的第一条记录,返回值为object 使用时需要拆箱操作 -> Unbox 
/// </summary> 
/// <param name="sqlstr">传入的Sql语句</param> 
/// <returns>object 返回值 </returns> 
public static object ExecuteScalar(string sqlstr) 

object obj=new object(); 
try 

openConnection(); 
comm.CommandType =CommandType.Text ; 
comm.CommandText =sqlstr; 
obj=comm.ExecuteScalar(); 

catch(Exception e) 

throw new Exception(e.Message); 

finally 

closeConnection(); 

return obj; 
} /// <summary> 
/// 执行Sql查询语句,同时进行事务处理 
/// </summary> 
/// <param name="sqlstr">传入的Sql语句</param> 
public static void ExecuteSqlWithTransaction(string sqlstr) 

SqlTransaction trans ; 
trans=conn.BeginTransaction(); 
comm.Transaction =trans; 
try 

openConnection(); 
comm.CommandType =CommandType.Text ; 
comm.CommandText =sqlstr; 
comm.ExecuteNonQuery(); 
trans.Commit(); 

catch 

trans.Rollback(); 

finally 

closeConnection();