三實例
先看如下兩個圖圖二表示DTS端圖三表示Client端其中DTS已經建立了與數據庫服務器的連接數據窗口中顯示的是所有的數據Client並沒有數據庫接口而是通過DTS間接的訪問數據在數據窗口中顯示的是所有男性職工
圖(二)
圖(三)
該程序的大部分源代碼如下
DTS端
首先定義一個全局變量Transport mytrans;
在開始監聽按鈕中輸入如下代碼
long ll
mytrans=create transport
mytransdriver=winsock
mytransapplication= //端口號
mytranslocation= //本地服務器
ll=mytranslisten() //開始監聽
if ll<> then
messagebox(string(mytranserrcode)mytranserrtext)
return
end if
serversettranspool() //設置連接緩沖注意server為應用的名稱
thistext=正在監聽中
thisenabled=false
在結束監聽按鈕中輸入如下代碼
mytransstoplistening() //結束監聽
destroy mytrans
cb_text=開始監聽
cb_enabled=true
建立一個NVO
利用PB的User Objects畫板建立一個classàcustom的用戶對象建立用戶對象函數nvoretrieve(ref blob bufferstring filter) returns long函數體如下
long ll
SQLCADBMS = ODBC
SQLCAAutoCommit = False
SQLCADBParm = Connectstring=DSN=person
connect; //建立與數據庫的連接
datastore datastore_buffer
datastore_buffer=create datastore
datastore_bufferdataobject=dw_person //dw_person是一個數據窗口
datastore_buffersettransobject(sqlca)
datastore_bufferretrieve()
datastore_buffersetfilter(filter)
datastore_bufferfilter()
ll=datastore_buffergetfullstate(buffer) //函數getfullstate()和setfullstate()常用於分布式應用程序
disconnect;
return ll
建立NVO的代理對象
在用戶對象上點鼠標右健選擇Set Proxy Name輸入NVO_dw保存用戶對象
打開Library畫板將NVO_dw輸出為文件以便在客戶端導入該代理
Client端
打開Library畫板將剛才輸出的文件導入
定義兩個全局變量
connection myconn
nvo_dw proxy_dw
在連接按鈕中輸入如下代碼
long ll
myconn=create connection
myconndriver=winsock
myconnapplication= //必須和DTS端的端口號一致
myconnlocation= //DTS的IP地址
ll=myconnconnecttoserver() //建立連接
if ll<> then
messagebox(string(myconnerrcode)myconnerrtext)
return
end if
thistext=正在連接中
thisenabled=false
cb_enabled=true
cb_enabled=true
在斷開按鈕中輸入如下代碼
myconndisconnectserver() //斷開連接
destroy myconn
cb_enabled=true
cb_text=連接
cb_enabled=false
thisenabled=false
在查詢按鈕中輸入如下代碼
long result
blob buffer
myconncreateinstance(proxy_dw) //建立代理對象
result=proxy_dwnvoretrieve(buffersex=男) //檢索所有男性職工
result=dw_setfullstate(buffer) //dw_是一個數據窗口控件
四小結及注意事項
以上程序在WINDOWSPB環境中調試通過在客戶數量很多數據量很大的情況下查詢的速度會快很多
編程時注意如果NVO的函數體發生變化則無須重新生成代理如果NVO的函數接口發生變化則必須重新生成它的代理並將它輸入到客戶端中
NVO對象是一個不可視對象只能通過函數調用的方法使用它不可將它作為一個控件放在窗口上
From:http://tw.wingwit.com/Article/program/SQL/201311/16219.html