一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - ASP.NET教程 - asp.net下Oracle,SQL Server,Access萬能數(shù)據(jù)庫通用類

asp.net下Oracle,SQL Server,Access萬能數(shù)據(jù)庫通用類

2019-09-09 10:50asp.net之家 ASP.NET教程

Oracle,SQL Server,Access萬能數(shù)據(jù)庫通用類!,使用asp.net開發(fā)多數(shù)據(jù)庫系統(tǒng)的朋友可以參考下。

代碼如下:

using System; 
using System.Collections; 
using System.Collections.Specialized; 
using System.Data; 
using System.Data.SqlClient; 
using System.Data.OleDb; 
using System.Data.OracleClient; 
using System.Configuration; 
using System.Reflection; 

namespace SystemFramework.DAL 

/**//// <summary> 
/// All rights reserved 
/// 數(shù)據(jù)訪問基礎(chǔ)類 
/// 用戶可以修改滿足自己項目的需要。 
/// </summary> 
public class DataBaseLayer 

//數(shù)據(jù)庫連接字符串(web.config來配置) 
//<add key="ConnectionString" value="server=127.0.0.1;database=DATABASE;uid=sa;pwd=" /> 
private string connectionString; 
public string ConntionString 

get 

return connectionString ; 

set 

connectionString = value; 




public DataBaseLayer(string strConnect,string dataType) 

this.ConntionString = strConnect; 
this.DbType = dataType; 



public DataBaseLayer() 

this.connectionString = ConfigurationSettings.AppSettings["ConnectionString"] ; 
this.dbType = ConfigurationSettings.AppSettings["DataType"] ; 


/**//// <summary> 
/// 數(shù)據(jù)庫類型 
/// </summary> 
private string dbType; 
public string DbType 

get 

if ( dbType == string.Empty || dbType == null ) 

return "Access"; 

else 

return dbType; 


set 

if ( value != string.Empty && value != null ) 

dbType = value; 

if (dbType ==string.Empty || dbType == null) 

dbType = ConfigurationSettings.AppSettings["DataType"]; 

if ( dbType == string.Empty || dbType == null ) 

dbType = "Access"; 







轉(zhuǎn)換參數(shù)#region 轉(zhuǎn)換參數(shù) 
private System.Data.IDbDataParameter iDbPara(string ParaName,string DataType) 

switch(this.DbType) 

case "SqlServer": 
return GetSqlPara(ParaName,DataType); 

case "Oracle": 
return GetOleDbPara(ParaName,DataType); 

case "Access": 
return GetOleDbPara(ParaName,DataType); 

default : 
return GetSqlPara(ParaName,DataType); 




private System.Data.SqlClient.SqlParameter GetSqlPara( string ParaName , string DataType) 

switch(DataType) 

case "Decimal": 
return new System.Data.SqlClient.SqlParameter ( ParaName, System.Data.SqlDbType.Decimal ); 
case "Varchar": 
return new System.Data.SqlClient.SqlParameter ( ParaName, System.Data.SqlDbType.VarChar ); 
case "DateTime": 
return new System.Data.SqlClient.SqlParameter ( ParaName, System.Data.SqlDbType.DateTime ); 
case "Iamge": 
return new System.Data.SqlClient.SqlParameter ( ParaName, System.Data.SqlDbType.Image ); 
case "Int": 
return new System.Data.SqlClient.SqlParameter ( ParaName, System.Data.SqlDbType.Int ); 
case "Text": 
return new System.Data.SqlClient.SqlParameter ( ParaName, System.Data.SqlDbType.NText ); 
default : 
return new System.Data.SqlClient.SqlParameter ( ParaName, System.Data.SqlDbType.VarChar ); 



private System.Data.OracleClient.OracleParameter GetOraclePara( string ParaName , string DataType) 

switch(DataType) 

case "Decimal": 
return new System.Data.OracleClient.OracleParameter( ParaName, System.Data.OracleClient.OracleType.Double); 

case "Varchar": 
return new System.Data.OracleClient.OracleParameter ( ParaName, System.Data.OracleClient.OracleType.VarChar ); 

case "DateTime": 
return new System.Data.OracleClient.OracleParameter ( ParaName, System.Data.OracleClient.OracleType.DateTime ); 

case "Iamge": 
return new System.Data.OracleClient.OracleParameter ( ParaName, System.Data.OracleClient.OracleType.BFile ); 

case "Int": 
return new System.Data.OracleClient.OracleParameter ( ParaName, System.Data.OracleClient.OracleType.Int32 ); 

case "Text": 
return new System.Data.OracleClient.OracleParameter ( ParaName, System.Data.OracleClient.OracleType.LongVarChar ); 

default: 
return new System.Data.OracleClient.OracleParameter ( ParaName, System.Data.OracleClient.OracleType.VarChar ); 




private System.Data.OleDb.OleDbParameter GetOleDbPara( string ParaName , string DataType) 

switch(DataType) 

case "Decimal": 
return new System.Data.OleDb.OleDbParameter( ParaName, System.Data.DbType.Decimal); 

case "Varchar": 
return new System.Data.OleDb.OleDbParameter ( ParaName, System.Data.DbType.String ); 

case "DateTime": 
return new System.Data.OleDb.OleDbParameter ( ParaName, System.Data.DbType.DateTime ); 

case "Iamge": 
return new System.Data.OleDb.OleDbParameter( ParaName, System.Data.DbType.Binary ); 

case "Int": 
return new System.Data.OleDb.OleDbParameter ( ParaName, System.Data.DbType.Int32 ); 

case "Text": 
return new System.Data.OleDb.OleDbParameter ( ParaName, System.Data.DbType.String ); 

default: 
return new System.Data.OleDb.OleDbParameter ( ParaName, System.Data.DbType.String ); 




#endregion 

創(chuàng)建 Connection 和 Command#region 創(chuàng)建 Connection 和 Command 

private IDbConnection GetConnection() 

switch(this.DbType) 

case "SqlServer": 
return new System.Data.SqlClient.SqlConnection(this.ConntionString); 

case "Oracle": 
return new System.Data.OracleClient.OracleConnection(this.ConntionString); 

case "Access": 
return new System.Data.OleDb.OleDbConnection(this.ConntionString); 
default: 
return new System.Data.SqlClient.SqlConnection(this.ConntionString); 




private IDbCommand GetCommand(string Sql,IDbConnection iConn) 

switch(this.DbType) 

case "SqlServer": 
return new System.Data.SqlClient.SqlCommand(Sql,(SqlConnection)iConn); 

case "Oracle": 
return new System.Data.OracleClient.OracleCommand(Sql,(OracleConnection)iConn); 

case "Access": 
return new System.Data.OleDb.OleDbCommand(Sql,(OleDbConnection)iConn); 
default: 
return new System.Data.SqlClient.SqlCommand(Sql,(SqlConnection)iConn); 



private IDbCommand GetCommand() 

switch(this.DbType) 

case "SqlServer": 
return new System.Data.SqlClient.SqlCommand(); 

case "Oracle": 
return new System.Data.OracleClient.OracleCommand(); 

case "Access": 
return new System.Data.OleDb.OleDbCommand(); 
default: 
return new System.Data.SqlClient.SqlCommand(); 



private IDataAdapter GetAdapater(string Sql,IDbConnection iConn) 

switch(this.DbType) 

case "SqlServer": 
return new System.Data.SqlClient.SqlDataAdapter(Sql,(SqlConnection)iConn); 

case "Oracle": 
return new System.Data.OracleClient.OracleDataAdapter(Sql,(OracleConnection)iConn); 

case "Access": 
return new System.Data.OleDb.OleDbDataAdapter(Sql,(OleDbConnection)iConn); 

default: 
return new System.Data.SqlClient.SqlDataAdapter(Sql,(SqlConnection)iConn);; 




private IDataAdapter GetAdapater() 

switch(this.DbType) 

case "SqlServer": 
return new System.Data.SqlClient.SqlDataAdapter(); 

case "Oracle": 
return new System.Data.OracleClient.OracleDataAdapter(); 

case "Access": 
return new System.Data.OleDb.OleDbDataAdapter(); 

default: 
return new System.Data.SqlClient.SqlDataAdapter(); 



private IDataAdapter GetAdapater(IDbCommand iCmd) 

switch(this.DbType) 

case "SqlServer": 
return new System.Data.SqlClient.SqlDataAdapter((SqlCommand)iCmd); 

case "Oracle": 
return new System.Data.OracleClient.OracleDataAdapter((OracleCommand)iCmd); 

case "Access": 
return new System.Data.OleDb.OleDbDataAdapter((OleDbCommand)iCmd); 

default: 
return new System.Data.SqlClient.SqlDataAdapter((SqlCommand)iCmd); 


#endregion 

執(zhí)行簡單SQL語句#region 執(zhí)行簡單SQL語句 
/**//// <summary> 
/// 執(zhí)行SQL語句,返回影響的記錄數(shù) 
/// </summary> 
/// <param name="SQLString">SQL語句</param> 
/// <returns>影響的記錄數(shù)</returns> 
public int ExecuteSql(string SqlString) 

using (System.Data.IDbConnection iConn = this.GetConnection()) 

using (System.Data.IDbCommand iCmd = GetCommand(SqlString,iConn)) 

iConn.Open(); 
try 


int rows=iCmd.ExecuteNonQuery(); 
return rows; 

catch(System.Exception E) 

throw new Exception(E.Message); 

finally 

if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 






/**//// <summary> 
/// 執(zhí)行多條SQL語句,實(shí)現(xiàn)數(shù)據(jù)庫事務(wù)。 
/// </summary> 
/// <param name="SQLStringList">多條SQL語句</param> 
public void ExecuteSqlTran(ArrayList SQLStringList) 

using (System.Data.IDbConnection iConn = this.GetConnection()) 

iConn.Open(); 
using(System.Data.IDbCommand iCmd = GetCommand()) 

iCmd.Connection=iConn; 
using(System.Data.IDbTransaction iDbTran = iConn.BeginTransaction()) 

iCmd.Transaction=iDbTran; 
try 

for(int n=0;n<SQLStringList.Count;n++) 

string strsql = SQLStringList[n].ToString(); 
if ( strsql.Trim().Length>1) 

iCmd.CommandText = strsql; 
iCmd.ExecuteNonQuery(); 


iDbTran.Commit(); 

catch(System.Exception E) 

iDbTran.Rollback(); 
throw new Exception(E.Message); 

finally 

if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 








/**//// <summary> 
/// 執(zhí)行帶一個存儲過程參數(shù)的的SQL語句。 
/// </summary> 
/// <param name="SQLString">SQL語句</param> 
/// <param name="content">參數(shù)內(nèi)容,比如一個字段是格式復(fù)雜的文章,有特殊符號,可以通過這個方式添加</param> 
/// <returns>影響的記錄數(shù)</returns> 
public int ExecuteSql(string SqlString,string content) 

using (System.Data.IDbConnection iConn = this.GetConnection()) 

using(System.Data.IDbCommand iCmd = GetCommand(SqlString,iConn)) 

System.Data.IDataParameter myParameter = this.iDbPara( "@content", "Text"); 
myParameter.Value = content ; 
iCmd.Parameters.Add(myParameter); 
iConn.Open(); 
try 


int rows = iCmd.ExecuteNonQuery(); 
return rows; 

catch( System.Exception e ) 

throw new Exception(e.Message); 

finally 

if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 







/**//// <summary> 
/// 向數(shù)據(jù)庫里插入圖像格式的字段(和上面情況類似的另一種實(shí)例) 
/// </summary> 
/// <param name="strSQL">SQL語句</param> 
/// <param name="fs">圖像字節(jié),數(shù)據(jù)庫的字段類型為image的情況</param> 
/// <returns>影響的記錄數(shù)</returns> 
public int ExecuteSqlInsertImg(string SqlString,byte[] fs) 

using (System.Data.IDbConnection iConn = this.GetConnection()) 

using(System.Data.IDbCommand iCmd = GetCommand(SqlString,iConn)) 

System.Data.IDataParameter myParameter = this.iDbPara( "@content", "Image"); 
myParameter.Value = fs ; 
iCmd.Parameters.Add(myParameter); 
iConn.Open(); 
try 

int rows = iCmd.ExecuteNonQuery(); 
return rows; 

catch( System.Exception e ) 

throw new Exception(e.Message); 

finally 

if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 






/**//// <summary> 
/// 執(zhí)行一條計算查詢結(jié)果語句,返回查詢結(jié)果(object)。 
/// </summary> 
/// <param name="SQLString">計算查詢結(jié)果語句</param> 
/// <returns>查詢結(jié)果(object)</returns> 
public object GetSingle(string SqlString) 

using (System.Data.IDbConnection iConn = GetConnection()) 

using (System.Data.IDbCommand iCmd = GetCommand(SqlString,iConn)) 

iConn.Open(); 
try 

object obj = iCmd.ExecuteScalar(); 
if((Object.Equals(obj,null))||(Object.Equals(obj,System.DBNull.Value))) 

return null; 

else 

return obj; 


catch(System.Exception e) 

throw new Exception(e.Message); 

finally 

if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 





/**//// <summary> 
/// 執(zhí)行查詢語句,返回IDataAdapter 
/// </summary> 
/// <param name="strSQL">查詢語句</param> 
/// <returns>IDataAdapter</returns> 
public IDataAdapter ExecuteReader(string strSQL) 

using (System.Data.IDbConnection iConn = this.GetConnection()) 

iConn.Open(); 
try 

System.Data.IDataAdapter iAdapter = this.GetAdapater(strSQL,iConn); 
return iAdapter; 

catch(System.Exception e) 

throw new Exception(e.Message); 

finally 

if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 




/**//// <summary> 
/// 執(zhí)行查詢語句,返回DataSet 
/// </summary> 
/// <param name="SQLString">查詢語句</param> 
/// <returns>DataSet</returns> 
public DataSet Query(string sqlString) 

using (System.Data.IDbConnection iConn = this.GetConnection()) 

using(System.Data.IDbCommand iCmd = GetCommand(sqlString,iConn)) 

DataSet ds = new DataSet(); 
iConn.Open(); 
try 

System.Data.IDataAdapter iAdapter = this.GetAdapater(sqlString,iConn); 
iAdapter.Fill(ds); 
return ds; 

catch(System.Exception ex) 

throw new Exception(ex.Message); 

finally 

if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 






/**//// <summary> 
/// 執(zhí)行查詢語句,返回DataSet 
/// </summary> 
/// <param name="sqlString">查詢語句</param> 
/// <param name="dataSet">要填充的DataSet</param> 
/// <param name="tableName">要填充的表名</param> 
/// <returns>DataSet</returns> 
public DataSet Query(string sqlString,DataSet dataSet,string tableName) 

using (System.Data.IDbConnection iConn = this.GetConnection()) 

using(System.Data.IDbCommand iCmd = GetCommand(sqlString,iConn)) 

iConn.Open(); 
try 

System.Data.IDataAdapter iAdapter = this.GetAdapater(sqlString,iConn); 
((OleDbDataAdapter)iAdapter).Fill(dataSet,tableName); 
return dataSet; 

catch(System.Exception ex) 

throw new Exception(ex.Message); 

finally 

if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 







/**//// <summary> 
/// 執(zhí)行SQL語句 返回存儲過程 
/// </summary> 
/// <param name="sqlString">Sql語句</param> 
/// <param name="dataSet">要填充的DataSet</param> 
/// <param name="startIndex">開始記錄</param> 
/// <param name="pageSize">頁面記錄大小</param> 
/// <param name="tableName">表名稱</param> 
/// <returns>DataSet</returns> 
public DataSet Query(string sqlString , DataSet dataSet ,int startIndex ,int pageSize, string tableName ) 

using (System.Data.IDbConnection iConn = this.GetConnection()) 

iConn.Open(); 
try 

System.Data.IDataAdapter iAdapter = this.GetAdapater(sqlString,iConn); 

((OleDbDataAdapter)iAdapter).Fill(dataSet,startIndex,pageSize,tableName); 

return dataSet; 

catch(Exception ex) 

throw new Exception(ex.Message); 

finally 

if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 






/**//// <summary> 
/// 執(zhí)行查詢語句,向XML文件寫入數(shù)據(jù) 
/// </summary> 
/// <param name="sqlString">查詢語句</param> 
/// <param name="xmlPath">XML文件路徑</param> 
public void WriteToXml(string sqlString,string xmlPath) 

Query(sqlString).WriteXml(xmlPath); 


/**//// <summary> 
/// 執(zhí)行查詢語句 
/// </summary> 
/// <param name="SqlString">查詢語句</param> 
/// <returns>DataTable </returns> 
public DataTable ExecuteQuery(string sqlString) 

using (System.Data.IDbConnection iConn = this.GetConnection()) 

//System.Data.IDbCommand iCmd = GetCommand(sqlString,iConn); 
DataSet ds = new DataSet(); 
try 

System.Data.IDataAdapter iAdapter = this.GetAdapater(sqlString,iConn); 
iAdapter.Fill(ds); 

catch(System.Exception e) 

throw new Exception(e.Message); 

finally 

if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 


return ds.Tables[0]; 



/**//// <summary> 
/// 執(zhí)行查詢語句 
/// </summary> 
/// <param name="SqlString">查詢語句</param> 
/// <returns>DataTable </returns> 
public DataTable ExecuteQuery(string SqlString,string Proc) 

using (System.Data.IDbConnection iConn = this.GetConnection()) 

using(System.Data.IDbCommand iCmd = GetCommand(SqlString,iConn)) 

iCmd.CommandType = CommandType.StoredProcedure; 
DataSet ds = new DataSet(); 
try 

System.Data.IDataAdapter iDataAdapter = this.GetAdapater(SqlString,iConn); 
iDataAdapter.Fill(ds); 

catch(System.Exception e) 

throw new Exception(e.Message); 

finally 

if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 


return ds.Tables[0]; 






/**//// <summary> 
/// 
/// </summary> 
/// <param name="Sql"></param> 
/// <returns></returns> 
public DataView ExeceuteDataView(string Sql) 

using (System.Data.IDbConnection iConn = this.GetConnection()) 

using(System.Data.IDbCommand iCmd = GetCommand(Sql,iConn)) 

DataSet ds = new DataSet(); 
try 

System.Data.IDataAdapter iDataAdapter = this.GetAdapater(Sql,iConn); 
iDataAdapter.Fill(ds); 
return ds.Tables[0].DefaultView; 

catch(System.Exception e) 

throw new Exception(e.Message); 

finally 

if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 






#endregion 

執(zhí)行帶參數(shù)的SQL語句#region 執(zhí)行帶參數(shù)的SQL語句 
/**//// <summary> 
/// 執(zhí)行SQL語句,返回影響的記錄數(shù) 
/// </summary> 
/// <param name="SQLString">SQL語句</param> 
/// <returns>影響的記錄數(shù)</returns> 
public int ExecuteSql(string SQLString,params IDataParameter[] iParms) 

using (System.Data.IDbConnection iConn = this.GetConnection()) 

System.Data.IDbCommand iCmd = GetCommand(); 

try 

PrepareCommand(out iCmd, iConn, null , SQLString, iParms ); 
int rows=iCmd.ExecuteNonQuery(); 
iCmd.Parameters.Clear(); 
return rows; 

catch(System.Exception E) 

throw new Exception( E.Message ); 

finally 

iCmd.Dispose(); 
if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 







/**//// <summary> 
/// 執(zhí)行多條SQL語句,實(shí)現(xiàn)數(shù)據(jù)庫事務(wù)。 
/// </summary> 
/// <param name="SQLStringList">SQL語句的哈希表(key為sql語句,value是該語句的SqlParameter[])</param> 
public void ExecuteSqlTran(Hashtable SQLStringList) 

using (System.Data.IDbConnection iConn = this.GetConnection()) 

iConn.Open(); 
using (IDbTransaction iTrans = iConn.BeginTransaction()) 

System.Data.IDbCommand iCmd = GetCommand(); 
try 

//循環(huán) 
foreach ( DictionaryEntry myDE in SQLStringList) 

string cmdText = myDE.Key.ToString(); 
IDataParameter[] iParms=( IDataParameter[] ) myDE.Value; 
PrepareCommand( out iCmd , iConn , iTrans , cmdText , iParms ); 
int val = iCmd.ExecuteNonQuery(); 
iCmd.Parameters.Clear(); 

iTrans.Commit(); 

catch 

iTrans.Rollback(); 
throw; 

finally 

iCmd.Dispose(); 
if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 








/**//// <summary> 
/// 執(zhí)行一條計算查詢結(jié)果語句,返回查詢結(jié)果(object)。 
/// </summary> 
/// <param name="SQLString">計算查詢結(jié)果語句</param> 
/// <returns>查詢結(jié)果(object)</returns> 
public object GetSingle(string SQLString,params IDataParameter[] iParms) 

using (System.Data.IDbConnection iConn = this.GetConnection()) 

System.Data.IDbCommand iCmd = GetCommand(); 

try 

PrepareCommand( out iCmd, iConn, null , SQLString, iParms ); 
object obj = iCmd.ExecuteScalar(); 
iCmd.Parameters.Clear(); 
if((Object.Equals(obj,null))||(Object.Equals(obj,System.DBNull.Value))) 

return null; 

else 

return obj; 


catch(System.Exception e) 

throw new Exception(e.Message); 

finally 

iCmd.Dispose(); 
if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 






/**//// <summary> 
/// 執(zhí)行查詢語句,返回IDataReader 
/// </summary> 
/// <param name="strSQL">查詢語句</param> 
/// <returns> IDataReader </returns> 
public IDataReader ExecuteReader(string SQLString,params IDataParameter[] iParms) 

System.Data.IDbConnection iConn = this.GetConnection(); 

System.Data.IDbCommand iCmd = GetCommand(); 

try 

PrepareCommand(out iCmd, iConn , null , SQLString , iParms); 
System.Data.IDataReader iReader = iCmd.ExecuteReader(); 
iCmd.Parameters.Clear(); 
return iReader; 

catch(System.Exception e) 

throw new Exception(e.Message); 

finally 

iCmd.Dispose(); 
if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 






/**//// <summary> 
/// 執(zhí)行查詢語句,返回DataSet 
/// </summary> 
/// <param name="SQLString">查詢語句</param> 
/// <returns>DataSet</returns> 
public DataSet Query(string sqlString,params IDataParameter[] iParms) 

using (System.Data.IDbConnection iConn = this.GetConnection()) 

IDbCommand iCmd = GetCommand(); 

PrepareCommand(out iCmd , iConn , null , sqlString , iParms ); 
try 

IDataAdapter iAdapter = this.GetAdapater(sqlString,iConn); 
DataSet ds = new DataSet(); 
iAdapter.Fill(ds); 
iCmd.Parameters.Clear(); 
return ds; 

catch(System.Exception ex) 

throw new Exception(ex.Message); 

finally 

iCmd.Dispose(); 
if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 







/**//// <summary> 
/// 初始化Command 
/// </summary> 
/// <param name="iCmd"></param> 
/// <param name="iConn"></param> 
/// <param name="iTrans"></param> 
/// <param name="cmdText"></param> 
/// <param name="iParms"></param> 
private void PrepareCommand(out IDbCommand iCmd,IDbConnection iConn,System.Data.IDbTransaction iTrans, string cmdText, IDataParameter[] iParms) 

if (iConn.State != ConnectionState.Open) 
iConn.Open(); 
iCmd = this.GetCommand(); 
iCmd.Connection = iConn; 
iCmd.CommandText = cmdText; 
if (iTrans != null) 
iCmd.Transaction = iTrans; 
iCmd.CommandType = CommandType.Text;//cmdType; 
if (iParms != null) 

foreach (IDataParameter parm in iParms) 
iCmd.Parameters.Add(parm); 



#endregion 

存儲過程操作#region 存儲過程操作 

/**//// <summary> 
/// 執(zhí)行存儲過程 
/// </summary> 
/// <param name="storedProcName">存儲過程名</param> 
/// <param name="parameters">存儲過程參數(shù)</param> 
/// <returns>SqlDataReader</returns> 
public SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters ) 

System.Data.IDbConnection iConn = this.GetConnection(); 

iConn.Open(); 

using(SqlCommand sqlCmd = BuildQueryCommand(iConn,storedProcName, parameters)) 

return sqlCmd.ExecuteReader(CommandBehavior.CloseConnection); 




/**//// <summary> 
/// 執(zhí)行存儲過程 
/// </summary> 
/// <param name="storedProcName">存儲過程名</param> 
/// <param name="parameters">存儲過程參數(shù)</param> 
/// <param name="tableName">DataSet結(jié)果中的表名</param> 
/// <returns>DataSet</returns> 
public DataSet RunProcedure(string storedProcName, IDataParameter[] parameters ,string tableName) 


using (System.Data.IDbConnection iConn = this.GetConnection()) 

DataSet dataSet = new DataSet(); 
iConn.Open(); 
System.Data.IDataAdapter iDA = this.GetAdapater(); 
iDA = this.GetAdapater( BuildQueryCommand(iConn, storedProcName, parameters ) ); 

((SqlDataAdapter)iDA).Fill( dataSet,tableName); 
if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 

return dataSet; 





/**//// <summary> 
/// 執(zhí)行存儲過程 
/// </summary> 
/// <param name="storedProcName">存儲過程名</param> 
/// <param name="parameters">存儲過程參數(shù)</param> 
/// <param name="tableName">DataSet結(jié)果中的表名</param> 
/// <param name="startIndex">開始記錄索引</param> 
/// <param name="pageSize">頁面記錄大小</param> 
/// <returns>DataSet</returns> 
public DataSet RunProcedure(string storedProcName, IDataParameter[] parameters ,int startIndex,int pageSize,string tableName) 


using (System.Data.IDbConnection iConn = this.GetConnection()) 

DataSet dataSet = new DataSet(); 
iConn.Open(); 
System.Data.IDataAdapter iDA = this.GetAdapater(); 
iDA = this.GetAdapater( BuildQueryCommand(iConn, storedProcName, parameters ) ); 

((SqlDataAdapter)iDA).Fill( dataSet,startIndex,pageSize,tableName); 
if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 

return dataSet; 



/**//// <summary> 
/// 執(zhí)行存儲過程 填充已經(jīng)存在的DataSet數(shù)據(jù)集 
/// </summary> 
/// <param name="storeProcName">存儲過程名稱</param> 
/// <param name="parameters">存儲過程參數(shù)</param> 
/// <param name="dataSet">要填充的數(shù)據(jù)集</param> 
/// <param name="tablename">要填充的表名</param> 
/// <returns></returns> 
public DataSet RunProcedure(string storeProcName,IDataParameter[] parameters,DataSet dataSet,string tableName) 

using (System.Data.IDbConnection iConn = this.GetConnection()) 

iConn.Open(); 
System.Data.IDataAdapter iDA = this.GetAdapater(); 
iDA = this.GetAdapater(BuildQueryCommand(iConn,storeProcName,parameters)); 

((SqlDataAdapter)iDA).Fill(dataSet,tableName); 

if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 


return dataSet; 



/**//// <summary> 
/// 執(zhí)行存儲過程并返回受影響的行數(shù) 
/// </summary> 
/// <param name="storedProcName"></param> 
/// <param name="parameters"></param> 
/// <returns></returns> 
public int RunProcedureNoQuery(string storedProcName, IDataParameter[] parameters ) 


int result = 0; 
using (System.Data.IDbConnection iConn = this.GetConnection()) 

iConn.Open(); 
using(SqlCommand scmd = BuildQueryCommand(iConn,storedProcName,parameters)) 

result = scmd.ExecuteNonQuery(); 


if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 



return result ; 


public string RunProcedureExecuteScalar(string storeProcName,IDataParameter[] parameters) 

string result = string.Empty; 
using (System.Data.IDbConnection iConn = this.GetConnection()) 


iConn.Open(); 
using(SqlCommand scmd = BuildQueryCommand(iConn,storeProcName,parameters)) 

object obj = scmd.ExecuteScalar(); 
if(obj == null) 
result = null; 
else 
result = obj.ToString(); 


if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 




return result; 


/**//// <summary> 
/// 構(gòu)建 SqlCommand 對象(用來返回一個結(jié)果集,而不是一個整數(shù)值) 
/// </summary> 
/// <param name="connection">數(shù)據(jù)庫連接</param> 
/// <param name="storedProcName">存儲過程名</param> 
/// <param name="parameters">存儲過程參數(shù)</param> 
/// <returns>SqlCommand</returns> 
private SqlCommand BuildQueryCommand(IDbConnection iConn,string storedProcName, IDataParameter[] parameters) 


IDbCommand iCmd = GetCommand(storedProcName,iConn); 
iCmd.CommandType = CommandType.StoredProcedure; 
if (parameters == null) 

return (SqlCommand)iCmd; 

foreach (IDataParameter parameter in parameters) 

iCmd.Parameters.Add( parameter ); 

return (SqlCommand)iCmd; 


/**//// <summary> 
/// 執(zhí)行存儲過程,返回影響的行數(shù) 
/// </summary> 
/// <param name="storedProcName">存儲過程名</param> 
/// <param name="parameters">存儲過程參數(shù)</param> 
/// <param name="rowsAffected">影響的行數(shù)</param> 
/// <returns></returns> 
public int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected ) 

using (System.Data.IDbConnection iConn = this.GetConnection()) 

int result; 
iConn.Open(); 
using(SqlCommand sqlCmd = BuildIntCommand(iConn,storedProcName, parameters )) 

rowsAffected = sqlCmd.ExecuteNonQuery(); 
result = (int)sqlCmd.Parameters["ReturnValue"].Value; 

if(iConn.State != ConnectionState.Closed) 

iConn.Close(); 

return result; 




/**//// <summary> 
/// 創(chuàng)建 SqlCommand 對象實(shí)例(用來返回一個整數(shù)值) 
/// </summary> 
/// <param name="storedProcName">存儲過程名</param> 
/// <param name="parameters">存儲過程參數(shù)</param> 
/// <returns>SqlCommand 對象實(shí)例</returns> 
private SqlCommand BuildIntCommand(IDbConnection iConn,string storedProcName, IDataParameter[] parameters) 

SqlCommand sqlCmd = BuildQueryCommand(iConn,storedProcName, parameters ); 
sqlCmd.Parameters.Add( new SqlParameter ( "ReturnValue", 
SqlDbType.Int,4,ParameterDirection.ReturnValue, 
false,0,0,string.Empty,DataRowVersion.Default,null )); 
return sqlCmd; 

#endregion 



延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费观看在线 | 色批网站www | 国产精品51麻豆cm传媒 | 青久久 | 国产免费不卡视频 | 91小视频在线观看免费版高清 | 日韩在线免费看 | 国产一区二区免费视频 | 亚洲精品九色在线网站 | 3d欧美人禽交 | 探花国产| 久久久免费观看 | 免费看男人狂躁女人 | 久久精品久久久久 | 天天做天天爰夜夜爽 | 亚洲欧洲日产v特级毛片 | 亚洲国产婷婷俺也色综合 | 国产精品麻豆久久99 | 91久久偷偷做嫩草影院免费 | 日本剧情片在线播放中文版 | 性关系视频网站 | 国产午夜永久福利视频在线观看 | 亚洲国产成人综合 | 国产精品福利一区二区亚瑟 | 999jjj在线播放| 青青草原社区 | 亚洲一级视频在线观看 | 日本四虎影院 | 婷婷在线网站 | 操老妇| 免费观看一级一片 | 秋霞理论在一l级毛片 | 四虎国产精品免费久久麻豆 | 美女把小内内脱个精光打屁屁 | 天堂在线中文无弹窗全文阅读 | 亚洲欧美日韩国产精品一区 | 欧美亚洲第一区 | 日韩香蕉网 | 污小说免费| jazz中国在线视频 | 久久精视频 |