OCCI三種更新資料方式比較

2021-09-16 13:09:09 字數 1776 閱讀 9011

方法1:最基本的使用executeupdate,多條記錄後提交事務。示意**如下:

environment *env = environment::createenvironment("zhs16gbk", "utf8");

connection *conn = env->createconnection("scott", "tiger", "127.0.0.1/orcl***");

statement *stmt = conn->createstatement("insert into test values(:1,:2,:3)");

for(int i = 0; i < occi_max_array_size; ++i)

conn->commit();

方法2:使用setmaxiterations批量更新多條記錄。示意**如下:

stmt->setsql("insert into test values(:1,:2,:3)");

stmt->setmaxiterations(occi_max_array_size);

stmt->setmaxparamsize(1u, 64u);

stmt->setmaxparamsize(2u, 20u);

for(int i = 0; i < occi_max_array_size; ++i)

}stmt->executeupdate();

conn->commit();

注意:按照上面的順序執行,否則可能出錯。

方法3:使用setdatabuffer,示例**如下:

stmt->setsql("insert into test values(:1,:2,:3)");

ub2 ub2vi[occi_max_array_size];

char vi[occi_max_array_size][64];

date date[occi_max_array_size];

int sno[occi_max_array_size];

//先給陣列賦值

for(int i = 0; i < occi_max_array_size; ++i)

//這個必須傳入,因為每實際每個字串可能不同

stmt->setdatabuffer(1u, &vi, occi_sqlt_str, sizeof(vi[0]), ub2vi);

//單個長度不變因此不用傳入引數

stmt->setdatabuffer(2u, &date, occi_sqlt_dat, 7, null);

stmt->setdatabuffer(3u, &sno, occiint, sizeof(int), null);

stmt->executearrayupdate(occi_max_array_size);

conn->commit();

說明oci_max_array_size巨集定義512。

效能比較結果(單位:微妙):

方法1方法2

方法3375833

450250

353101

69888

71220

72005

34538

34213

34746

方法2:必須知道迭代數量,最後一次executeupdate,不能additeration。

清理

if(stmt)

if(conn)

if(env)

jdbc statement三種方式的比較

我在整理jdbc打包寫乙個集合方便以後用的時候發現了這個問題,以前也沒有注意到下來研究了一翻 共同點 statement,preparedstatement和callablestatement都是介面 inte ce 不同點 statement介面提供了執行語句和獲取結果的基本方法 prepared...

ngTable動態更新的三種方式

ngtable動態更新的三種方式 前言 是html中常見的表現形式,當我們用angularjs做前端開發時,我可以選擇用ngtable的開源元件。ngtable已經為了我們封裝了常用的 操作,節省我們大量的開發時間。本文將介紹如何動態更新 分為3種方式 1.前端更新,2.ajax更新,3.webso...

ORACLE批量更新三種方法比較

oracle批量更新三種方法比較 2008 05 30 11 55 46 標籤 雜談 資料庫 oracle 9i 測試工具 pl sql 定義2張測試表 t1,t2 t1 大表 10000條 t1 fk id t2 小表 5000條 t2 pk id t1通過表中字段id與t2的主鍵id關聯 模擬資...