PB鏈接數據庫

        數據庫的事務鏈接,之前不多接觸,作個東西都是用本地的數據庫,沒用過遠程,數據庫事務的鏈接也都用默認的,因此就形成了對這方面基本知識的不瞭解,實際上就是很簡單東西。sql

首先得把數據庫那邊的設置弄好,ODBC也好,OLE DB也好,總之先把數據源建起來。而後就程序中的代碼就這麼幾個東西:數據庫

SQLCA.DBMS = "OLE DB"
SQLCA.LogId = gs_logid
SQLCA.LogPass=gs_logpass
SQLCA.AutoCommit = False
SQLCA.dbparm ="PROVIDER='SQLOLEDB',DATASOURCE='"+gs_datasource+"',TimeOut="+string(ltime)+",PROVIDERSTRING='database="+gs_database+"'"網絡

第一行是數據廠商的名稱,說白了就是本身的鏈接方式。而後這幾個變量是必須有的:gs_logid用戶名,gs_logpass密碼(可爲空),gs_datasource數據源,gs_database數據庫。timeout的值是設置鏈接數據庫的時間。把這幾個變量賦值,而後用語句connect using sqlca就能夠練到數據庫了,無論是遠程的仍是本地的,數據庫都會自動給你搞定,不過數據庫的鏈接是很是耗資源的,若是你數據庫沒開或網絡中斷,就極可能形成機器很卡。ide

那天還編了一個測試程序,是鏈接到一個遠程的數據庫,若是斷開就計數+1,很簡單的一個東西,作了好幾遍。其實就是一個timer()事件,讓數據庫不斷的判斷鏈接。測試

w_testing.setfocus()
int lcount
select count(1) into :lcount from sys_user using sqlca;spa

if sqlca.sqlcode= 0 then
    st_4.text="已鏈接上"
ib_lastconnect=true
else
if ib_lastconnect=true then
   gl_counter++
   sle_1.text=string(gl_counter)
   w_main.sle_1.text=string(gl_counter)
end if
ib_lastconnect=false
st_4.text="已斷開,正在嘗試從新鏈接"
   
SQLCA.DBMS = "OLE DB"
SQLCA.LogId = gs_logid
SQLCA.LogPass=gs_logpass
SQLCA.AutoCommit =true
SQLCA.dbparm ="PROVIDER='SQLOLEDB',DATASOURCE='"+gs_datasource+"',TimeOut=15,PROVIDERSTRING='database="+gs_database+"'"
disconnect using sqlca;
connect using sqlca;

end ifcode

相關文章
相關標籤/搜索