大家都知道在程式中盡量少和資料庫互動是可以
提高程式效能的,
以下舉乙個比較常見的例子
如:需要根據
某條件判斷條記錄是否存在
如果不存在就
插入的這種操作。
一般都會用
2 次資料庫
io ,1次取
count
如果=0
就insert into
其實在oracle, 或sql service
等大型資料庫中可以使用批sql 語句節省資料庫io(和資料庫的互動).
以下例子是乙個簡單的的演示執行一次資料庫io(演示使用
c#+
oracle
資料庫演示,其他語言或sqlservice
也差不多),
適合使用在寫儲存過程沒太大意義的時候。
測試**如下:(注意,測試用的sql語句中注釋過多會影響效能,實際使用不用這麼多注釋)
語句比較簡單,所以沒有把錶結構貼出來,資料庫連線部分省略。
//使用批sql 執行(但不能換行和回車/r/n 不行/n 可以)
//c#
可以用@ 可以直接換行,vb 寫這樣的比較鬱悶所以用c# 作演示
const
string execsql=
@"declare
var_bbsitemid varchar2(12) :=:ipbbsitemid ;/*
傳入引數*/
var_userid varchar2(20) := :ipuserid ;/*
傳入引數*/
var_counts number(10);
begin
/*根據條件取記錄條數*/
select count(t.bbsitemid) into var_counts
from st_bb**rktrsltchk t
where t.userid = var_userid and t.bbsitemid = var_bbsitemid;
/* oracle
列印不知道怎麼看nnd */
dbms_output.put_line('count:'|| var_counts);
/*
如果是0條就插入*/
if var_counts = 0 then
insert into st_bb**rktrsltchk(bbsitemid, userid, read***, lastmodified)
values (var_bbsitemid, var_userid, 0, sysdate);
end if;
end;" ;
//auto --***mit;
//
必須把/r (換行符)去掉 否則oracle 不認而且會報錯。
this.cmd.***mandtext = execsql.replace("/r",string.empty);
cmd.parameters.clear();
oracleparameter par;
//傳引數
par = cmd.parameters.add(":ipbbsitemid",oracletype.varchar);
par.value="0012";
par = cmd.parameters.add(":ipuserid",oracletype.varchar);
par.value="def";
try
catch(exception ex)
}
完
資料庫基礎 以命令方式建立資料庫
create建立資料庫 注意 以命令的方式建立資料庫使用create database命令,建立前要確保使用者具有建立資料的許可權 create database 資料庫名稱 on primary 資料檔案選項 資料檔案組選項 log on collate 排序名 檔案選項 name 邏輯檔名 fi...
以Ajax的方式訪問資料庫
一 以ajax的方式顯示資料 我們都知道,如果用ajax程式去載入乙個動態頁,則載入的實際上是這個動態頁執行完畢後生成的靜態html 字串。1.以原有的格式顯示資料 header content type text html charset gb2312 include conn.php resul...
常用資料庫分頁語句及資料庫程式設計
取出sql表中第31到40的記錄 以自動增長id為主鍵 sql server 方案1 select top 10 from t where id not in select top 30 id from t order by id orde by id sql server 方案2 select t...