能传个小例子最好!!
谢谢!
和普通的用法一樣,自己寫個Function;不是很複雜,下面是我用到的一個例子;希望對你有所幫助
public DataSet ExecuteDataSet()
{
if(arr_DBCommandWrapper==null || arr_DBCommandWrapper.Count<1) return null;
DataSet o_Ds=new DataSet();
using(I_DbConn=o_Database.GetConnection())
{
I_DbConn.Open(); //打開接鏈
I_DbTran=I_DbConn.BeginTransaction(); //開啟事務
DataSet o_DsTemp;
try
{
foreach(DBCommandWrapper o_DBCommandWrapper in arr_DBCommandWrapper)
{
if(GetSQLType(o_DBCommandWrapper.Command.CommandText)==SQLType.Query)
{
o_DsTemp=o_Database.ExecuteDataSet(o_DBCommandWrapper,I_DbTran);
if(!(o_DsTemp==null || o_DsTemp.Tables.Count<1))
{
o_Ds.Tables.Add(o_DsTemp.Tables[0].Copy());
}
}
else
{
o_Database.ExecuteNonQuery(o_DBCommandWrapper,I_DbTran);
}
}
I_DbTran.Commit(); //提交事務
}
catch
{
I_DbTran.Rollback(); //回滾
throw;
}
finally
{
I_DbConn.Close();
}
}
b_Run=true; //表示事務已經執行完成
return o_Ds;
}
上面是以事務方式執行DBCommandWrapper.返回執行結果DataSet
還有一個逐筆執行事務的例子
public void ExecuteDataStep()
{
if(arr_DBCommandWrapper==null || arr_DBCommandWrapper.Count<1) return;
DataSet o_Ds=new DataSet();
using(I_DbConn=o_Database.GetConnection())
{
I_DbConn.Open(); //打開接鏈
I_DbTran=I_DbConn.BeginTransaction(); //開啟事務
Hashtable o_hasParameterName=null; //參數
string s_FieldName=string.Empty;
int i_Ero=0;
try
{
foreach(DBCommandWrapper o_DBCommandWrapper in arr_DBCommandWrapper)
{
i_Ero++;
if(this.GetSQLType(o_DBCommandWrapper.Command.CommandText)==SQLType.Query)
{
o_Ds=o_Database.ExecuteDataSet(o_DBCommandWrapper,I_DbTran) ;
}
else
{
o_hasParameterName=FindParameter(o_DBCommandWrapper);
if(o_hasParameterName == null || o_hasParameterName.Count==0 || o_Ds.Tables.Count<1)
{
o_Database.ExecuteNonQuery( o_DBCommandWrapper,I_DbTran) ;
}
else
{
IDictionaryEnumerator I_Enum=o_hasParameterName.GetEnumerator();
while(I_Enum.MoveNext())
{
s_FieldName=I_Enum.Value.ToString().Substring(2,I_Enum.Value.ToString().Length-2);
if(o_Ds.Tables[0].Columns[s_FieldName]!=null)
{
o_DBCommandWrapper.SetParameterValue(I_Enum.Key.ToString(),DataCheck.GetFieldValue(o_Ds,s_FieldName));
}
}
o_Database.ExecuteNonQuery( o_DBCommandWrapper,I_DbTran) ;
o_Ds.Tables.Clear();
}
}
}
I_DbTran.Commit(); //提交事務
}
catch(System.Exception ex)
{
ex.ToString();
i_Ero.ToString() ;
I_DbTran.Rollback(); //回滾
throw;
}
finally
{
I_DbConn.Close();
}
}
b_Run=true; //表示事務已經執行完成
}