.net中利用oracle產品內建的資料訪問組件(Oracle.DataAccess.dll)提升批次更新操作的執行效率
來源:互聯網
上載者:User
//動態連結程式庫路徑
$Oracle安裝路徑$/bin/Oracle.DataAccess.dll
//命名空間引用
using Oracle.DataAccess.Client;
//編碼過程概略
int rowsCount = 10;//此處假定需要對10條記錄進行刪除操作
Oracle.DataAccess.Client.OracleConnection connection = new Oracle.DataAccess.Client.OracleConnection("connection string here");
connection.Open();
Oracle.DataAccess.Client.OracleTransaction trans = connection.BeginTransaction();
Oracle.DataAccess.Client.OracleCommand cmd = new Oracle.DataAccess.Client.OracleCommand("delete from sample where id =:V_ID");
Oracle.DataAccess.Client.OracleParameter[] parameters = new Oracle.DataAccess.Client.OracleParameter[1];
//此處省略對parameters[0]的初始化和型別宣告操作
cmd.Connection = connection;
cmd.ArrayBindCount = rowsCount;
for(int i = 0;i < parameters.Length; i++)
{
parms[i].Value = new object[]{1,2,3,4,5,6,7,8,9,10};//此處可完成對涉及的所有參數進行批量賦值
}
foreach(Oracle.DataAccess.Client.OracleParameter param in parameters)
{
cmd.Parameters.Add(param);
}
cmd.ExecuteNonQuery();
trans.Commit();
connection.Close();
//效能最佳化說明
此種方式利用同一參數的批量賦值模式,充分利用了資料庫產品提供的高效參數緩衝機制,從而減少了語句解析時間(使用System.Data.OracleClient模式,每次執行都需要重新解析攜帶相同參數的查詢語句),最終在大批量資料更新時表現出更好的執行效率和執行效能.