PB與各種數(shù)據(jù)庫(kù)的連接轉(zhuǎn)_第1頁(yè)
PB與各種數(shù)據(jù)庫(kù)的連接轉(zhuǎn)_第2頁(yè)
PB與各種數(shù)據(jù)庫(kù)的連接轉(zhuǎn)_第3頁(yè)
PB與各種數(shù)據(jù)庫(kù)的連接轉(zhuǎn)_第4頁(yè)
PB與各種數(shù)據(jù)庫(kù)的連接轉(zhuǎn)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、.PB與各種數(shù)據(jù)庫(kù)的連接 轉(zhuǎn)PB與各種數(shù)據(jù)庫(kù)連接!1.Power script語(yǔ)言里的事務(wù)處理對(duì)象怎么理解PowerBuilder程序與數(shù)據(jù)庫(kù)之間傳遞信息的一個(gè)構(gòu)造變量,共有15個(gè)成員.你可以詳細(xì)列表它的所有成員看看它的組成,PB的應(yīng)用程序會(huì)初始化一個(gè)全局的構(gòu)造體變量,SQLCA,當(dāng)然你也可以自定義一個(gè)自己的事務(wù)對(duì)象.1 DBMS string所使用的數(shù)據(jù)庫(kù)管理系統(tǒng)的名字,如Sybase,Oracle,ODBC。2 Database string要連接的數(shù)據(jù)庫(kù)名字。3 UserID string連接數(shù)據(jù)庫(kù)所用的用戶(hù)名。有的DBMS不需要此項(xiàng)。4 DBPass string用戶(hù)連接數(shù)據(jù)庫(kù)的口令。

2、5 Lock string這是數(shù)據(jù)庫(kù)的保護(hù)級(jí)別,一般不必給出。6 LogID string登錄到數(shù)據(jù)庫(kù)效勞器上的用戶(hù)名,有的DBMS不需要此項(xiàng),但Sybase和Oracle需要指定這個(gè)參數(shù)。7 LogPass string登錄到數(shù)據(jù)庫(kù)效勞器上的用戶(hù)口令。這個(gè)屬性可設(shè)可不設(shè),但Sybase和Oracle需要指定口令。8 ServerName string數(shù)據(jù)庫(kù)效勞器名。9 AutoCommit boolean指定是否將數(shù)據(jù)庫(kù)設(shè)置成自動(dòng)提交所有事務(wù)。默認(rèn)是False,也就是說(shuō),必須在應(yīng)用程序中進(jìn)展事務(wù)管理,并在適當(dāng)?shù)臅r(shí)候?qū)?shù)據(jù)庫(kù)提交事務(wù)。假設(shè)選擇True,那么每個(gè)事務(wù)都由系統(tǒng)自動(dòng)提交。10 DBP

3、arm string用于向數(shù)據(jù)庫(kù)傳遞特殊信息的屬性。11 SQLCode long指示最近一次SQL操作失敗或成功。它的取值為:返回結(jié)果0無(wú)錯(cuò)誤。-1出現(xiàn)一個(gè)錯(cuò)誤。100沒(méi)有檢索到數(shù)據(jù)。12 SQLNRows long最近一次SQL操作影響的行數(shù),數(shù)據(jù)庫(kù)不同其含義也不同。13 SQLDBCode long數(shù)據(jù)庫(kù)錯(cuò)誤代碼。不同的數(shù)據(jù)庫(kù)的含義不同。14 SQLErrText string相應(yīng)于SQLDBCode屬性中錯(cuò)誤碼的文字說(shuō)明。15 SQLReturnData string返回DBMS執(zhí)行SQL的附加信息,不同的DBMS其值不同。2.我常見(jiàn)到做好的PB程序使用.ini文件來(lái)控制與數(shù)據(jù)庫(kù)連接,

4、可以方便的進(jìn)展應(yīng)用程序移植只需修改其中與數(shù)據(jù)庫(kù)連接參數(shù)即可,我想問(wèn)這些.ini文件只能使用手工編寫(xiě)嗎,我見(jiàn)到很多.ini文件參數(shù)極多不象手寫(xiě)好象是機(jī)器生成的,不知道如何生成啊?請(qǐng)大家指教1、其實(shí)PB中在新建-點(diǎn)TOOL-FILE EDIT可以生成編輯INI文件。最直接就是工具欄中的EDIT圖標(biāo)。2、機(jī)器生成代碼是:點(diǎn)DATABASE圖標(biāo)-選擇連接方式。如:選MSS MICROSOFT SQL SERVER右鍵-NEW PROFILE按要求填定一些參數(shù)后在-PREVIEW中可以看到代碼,把它復(fù)制到INI文件中就行了。3.編程經(jīng)歷-PB數(shù)據(jù)庫(kù)連接通常在使用PB和數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS連接時(shí),使用兩

5、種方式:一、開(kāi)放數(shù)據(jù)源接口ODBC連接ODBC是通過(guò)支持美國(guó)微軟公司開(kāi)放效勞構(gòu)造WOSA,Windows Open Services Architecture中的一部分.在PB中通過(guò)配置SQLCA.DBMS='ODBC'對(duì)象的屬性可使應(yīng)用程序通過(guò)ODBC連接到數(shù)據(jù)庫(kù)。ODBC的詳細(xì)配置包含了數(shù)據(jù)源、驅(qū)動(dòng)程序類(lèi)型、緩沖池等各種細(xì)節(jié)參數(shù)。例子:SQLCA.DBMS="ODBC"SQLCA.AutoCommit=False SQLCA.DBParm="ConnectString='DSN=xxx_dsn;UID=xxxWD="'

6、,ConnectOption='SQL_DRIVER_CONNECT,SQL_DRIVER_NOPROMPT'"二、專(zhuān)用數(shù)據(jù)庫(kù)接口每個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS均提供相應(yīng)的客戶(hù)端驅(qū)動(dòng),為了更好的效勞于數(shù)據(jù)庫(kù)。在這里我們使用的是Microsoft sqlserver 2000的客戶(hù)端程序。通過(guò)設(shè)置SQLCA.DBMS="MSS Microsoft SQL Server"使客戶(hù)端通過(guò)專(zhuān)用數(shù)據(jù)庫(kù)接口連接到數(shù)據(jù)庫(kù)。該類(lèi)接口的參數(shù)配置除了效勞器名、數(shù)據(jù)庫(kù)名、LogId、LogPass外還包含了連接協(xié)議等用戶(hù)驗(yàn)證方式等,可通過(guò)效勞器端或客戶(hù)端的配置程序進(jìn)展配置。S

7、QLCA.dbms="MSS Microsoft SQL Server"/接口類(lèi)型SQLCA.database="master"/數(shù)據(jù)庫(kù)SQLCA.userid=""SQLCA.dbpass=""SQLCA.logid="sa"SQLCA.logpass="xxxx"SQLCA.serverName=".xxx"/效勞器名SQLCA.dbparm="CommitOnDisconnect='No'"SQLCA.autoco

8、mmit=false以上介紹的是PB與數(shù)據(jù)庫(kù)連接時(shí)常用的方法。往往根據(jù)不同的應(yīng)用環(huán)境選擇連接方式,在單機(jī)環(huán)境下多采用的是ODBC連接,因?yàn)樵诎l(fā)行環(huán)節(jié)上相對(duì)要容易些。在網(wǎng)絡(luò)環(huán)境下多采用專(zhuān)用數(shù)據(jù)庫(kù)連接,這樣可以進(jìn)步系統(tǒng)的可靠性與執(zhí)行效率。專(zhuān)用數(shù)據(jù)庫(kù)的發(fā)行環(huán)節(jié)往往要配上相應(yīng)DBMS客戶(hù)端的動(dòng)態(tài)連接庫(kù)DLL,并把它存放在應(yīng)用程序當(dāng)前途徑,或存放在%SYSTEM%下面。我在開(kāi)發(fā)中用到了對(duì)BLOB類(lèi)型的數(shù)據(jù)進(jìn)展存取,大家都知道POWERBUILDER對(duì)BLOB字段的支持是有限的,每次只能處理32KB的數(shù)據(jù)塊,假設(shè)一個(gè)文件大于32K必須編寫(xiě)相應(yīng)的程序進(jìn)展處理。當(dāng)時(shí)的開(kāi)發(fā)環(huán)境是PWOERBUILDER 9.0

9、+MS SQL SERVER 2000+WINDOWS2000。當(dāng)通過(guò)ODBC連接數(shù)據(jù)讀取BLOB字段時(shí),通過(guò)MESSAGEBOX彈出的字節(jié)數(shù),觀察到只要超過(guò)32K的文件出現(xiàn),LENBLOB就會(huì)出錯(cuò),始終返回是32K字節(jié)的長(zhǎng)度。當(dāng)時(shí)很令人費(fèi)解,隨即疑心系統(tǒng)問(wèn)題,檢查病毒,重新安裝相應(yīng)的開(kāi)發(fā)環(huán)境,結(jié)果照舊,這才疑心到ODBC可能存在問(wèn)題,因?yàn)槲④浭菃?wèn)題專(zhuān)家,同時(shí)也是解決問(wèn)題的專(zhuān)家。當(dāng)通過(guò)SQLSERVER專(zhuān)用接口連接后,一切正常。由此證明了ODBC與專(zhuān)用數(shù)據(jù)庫(kù)接口之間存在著一定的問(wèn)題。由此可說(shuō)明各種同類(lèi)技術(shù)之間的細(xì)微差異,可能會(huì)給我們帶來(lái)意想不到的問(wèn)題。在開(kāi)發(fā)時(shí)還需慎重、全面的考慮所用技術(shù)的可靠

10、性。PowerBuilder與Sybase ASA數(shù)據(jù)庫(kù)連接問(wèn)題QUOTE:Sybse ASAAdaptive Server Anywhere在安裝完好版PowerBuilder時(shí)可以選擇安裝,PowerBuilder的例程也是以ASA作為數(shù)據(jù)庫(kù)的.一.ASA數(shù)據(jù)庫(kù)連接步驟QUOTE:1.添加數(shù)據(jù)源。在WINDOWS中點(diǎn)擊我的電腦,選擇控制面版,選擇ODBC數(shù)據(jù)源32位,選擇系統(tǒng)DSN,點(diǎn)擊"添加",然后選擇你使用的數(shù)據(jù)庫(kù).2.在工具條上點(diǎn)擊DB PROFILE選擇已建立好的數(shù)據(jù)庫(kù)連接,單擊EDIT在彈出的對(duì)話框中選PREVIEW里面就是連接數(shù)據(jù)庫(kù)的語(yǔ)句,直接COPY就OK

11、了。二.ASA DB_profile寫(xiě)法以lin 的tax例程為例tax.ini CODE:DatabaseDBMS=ODBC Database=test DbParm=connectstring='dsn=sybase_lin;UID=dbaWD=sql'Copy to clipboard三.打包所需文件參看以下文章:四.容易出現(xiàn)的問(wèn)題及解決方法導(dǎo)致ASA數(shù)據(jù)庫(kù)無(wú)法連接的問(wèn)題有以下幾種:1、ODBC配置錯(cuò)誤。沒(méi)有配置數(shù)據(jù)源,數(shù)據(jù)庫(kù)的用戶(hù)名或口令錯(cuò)誤等都會(huì)導(dǎo)致數(shù)據(jù)庫(kù)無(wú)法連接。解決的方法:檢查數(shù)據(jù)源的配置,假設(shè)沒(méi)有在ODBC中配置數(shù)據(jù)源那么按照向?qū)砑訑?shù)據(jù)源即可;口令錯(cuò)誤只需改為

12、正確的即可。2、連接時(shí)提示LOG文件錯(cuò)誤。這樣的問(wèn)題大多出如今重裝系統(tǒng)后、源碼移植到其他系統(tǒng)、數(shù)據(jù)庫(kù)文件途徑改變之后。解決的方法:在創(chuàng)立ASA數(shù)據(jù)庫(kù)的時(shí)候不創(chuàng)立LOG文件,假設(shè)已經(jīng)創(chuàng)立了LOG文件那么可以利用PB自帶的工具Sybase central來(lái)去掉LOG文件和數(shù)據(jù)庫(kù)文件的關(guān)聯(lián)。操作步驟如下:a啟動(dòng)Sybase central在左邊的樹(shù)型目錄中選擇Utilities;b雙擊右邊出現(xiàn)的條目中的change log file settings,直接next;c點(diǎn)Browse選擇需要去除log文件的數(shù)據(jù)庫(kù)文件,選好后next;d這里你會(huì)看到一些數(shù)據(jù)庫(kù)的信息,log文件名,文件大小等。next;

13、e去掉Maintin the following transaction log file前面的對(duì)勾,F(xiàn)inish;f配置ODBC連接數(shù)據(jù)庫(kù)就可以了。3、數(shù)據(jù)庫(kù)文件損壞。此類(lèi)錯(cuò)誤一般不常見(jiàn),可能由于病毒破壞或誤操作引起。解決的方法:假設(shè)以前有備份用備份文件覆蓋原文件即可,假設(shè)沒(méi)有備份文件就只能重新建庫(kù)了!PB8如何使用OLE DB練到ASA數(shù)據(jù)庫(kù)本文來(lái)自sybase網(wǎng)站翻譯by金色年華原文出處:.c_pb_dbms_00017.htm Connecting to ASA Server7.01 GAvia OLE DB in PowerBuilder 8Adaptive Server Anywh

14、ere includes an OLE DB provider named ASAProv.One of the features of ASAProvdboledb7.dllis that you do not have to deploy ODBC.In other words,you can connect to an ASA database either via OLE DB or via OLE DB/ODBC bridge.在pb中通過(guò)OLE DB連接到ASA數(shù)據(jù)庫(kù)的步驟如下:在命令提示符下鍵入如下命令,啟動(dòng)ASADEMO:dbsrv7 asademo-x tcpip-n asa

15、demo"asademo"-你選擇運(yùn)行的數(shù)據(jù)庫(kù).確定你沒(méi)有正在運(yùn)行一個(gè)同名的數(shù)據(jù)庫(kù),否那么會(huì)出錯(cuò)有兩個(gè)方法通過(guò)OLE DB連接到ASA Server:1OLE DB/ODBC bridge對(duì)于這種連接,你必須在數(shù)據(jù)庫(kù)參數(shù)中,指定有效的ODBC數(shù)據(jù)源,連接的腳本如下:/Profile asa_oledb SQLCA.DBMS="OLE DB"SQLCA.LogPass="sql"SQLCA.LogId="dba"SQLCA.AutoCommit=False SQLCA.DBParm="ROVIDER=

16、9;ASAProv',DATASOURCE='asa'"2OLE DB不需要配置ODBC你可以通過(guò)一個(gè)擴(kuò)展名為.udl的單獨(dú)的文件,提供連接信息,在OLE DB中訪問(wèn)數(shù)據(jù).這個(gè)文件與Microsoft DataLink.udlfile類(lèi)似.你必須在系統(tǒng)中安裝Datalink API以便于創(chuàng)立和使用.udl文件.創(chuàng)立.udl文件的方法:在當(dāng)前目錄里的空白處單擊鼠標(biāo)右鍵,選擇新建文件,選擇Microsoft Data Link.假設(shè)沒(méi)有創(chuàng)立Microsoft Data Link的選項(xiàng),需要?jiǎng)?chuàng)立一個(gè)文本文件,然后更改擴(kuò)展名為.udl.雙擊這個(gè)文件,添加連接信息.詳情

17、請(qǐng)?jiān)L問(wèn)msdn.microsoft 搜索Data Link此處原文有亂碼,詳細(xì)內(nèi)容不詳.在pb中使用.udl文件時(shí),要確認(rèn)在數(shù)據(jù)庫(kù)中已經(jīng)創(chuàng)立了Catalog Tables由pbcat.名字開(kāi)頭,然后用這幾張表存放一些PB中的信息,假設(shè)這幾張表無(wú)法創(chuàng)立,就會(huì)出現(xiàn)出錯(cuò)信息.你可以通過(guò)連接到系統(tǒng)中已有的ODBC數(shù)據(jù)源.假設(shè)這些表不存在,就會(huì)提示Catalog Tables沒(méi)有被創(chuàng)立.用以下信息來(lái)創(chuàng)立.udl文件:Provider Tab:Select"Adaptive Server Anywhere Provider"Connection Tab:Location:eng=asa

18、demo;dbn=asademo;Links=TCPIP;Select radio button for一.連接步驟1效勞器安裝SQL Server并啟動(dòng),創(chuàng)立數(shù)據(jù)庫(kù)。2客戶(hù)機(jī)安裝SQL Server客戶(hù)端。3啟動(dòng)PB,配置數(shù)據(jù)源描繪通過(guò)直連接口,不建議用ODBC。4連接。二.DB_profile的寫(xiě)法在ini文件里設(shè)置DatabaseDBMS=MSS Microsoft SQL Server 6.x Database=databasename UserId=LogID=DatabasePassword=LogPass=ServerName=AutoCommit=False在程序里用profi

19、lestring讀取附加資料:ms sql server配置文件設(shè)置ms sql server配置文件設(shè)置:dbms="mss"/只須在*.ini文件中用這個(gè)代碼便告訴pb使用的ms sql server Database:所用數(shù)據(jù)庫(kù)LogId:sql server的登陸賬號(hào)LogPass=口令servername:允許數(shù)據(jù)庫(kù)效勞器連接的計(jì)算機(jī)名autocommit:控制pb是工作在事務(wù)處理范圍內(nèi)還是工作在事務(wù)處理范圍外dbparm:dbms的專(zhuān)用連接參數(shù)以下參數(shù):language:在顯示錯(cuò)誤消息和日期格式時(shí)指定要使用的語(yǔ)言,在效勞器上必須設(shè)置該直.lock:事務(wù)處理隔離層

20、log:文本和圖像數(shù)據(jù)的更新是否應(yīng)該紀(jì)錄到事務(wù)日志中.systemprocs:系統(tǒng)存儲(chǔ)過(guò)程和用戶(hù)定義的存儲(chǔ)過(guò)程是否顯示在各種各樣的pb畫(huà)板中.pbcatalogowner:pb存儲(chǔ)中表的缺省者.async:允許在效勞器上進(jìn)展同步操作.0:同步,1:異步dbgettime:當(dāng)async=1時(shí),使用該參數(shù)設(shè)置用戶(hù)在檢索行時(shí)pb等待來(lái)自pb的響應(yīng)的秒數(shù).cursorlock:release和cursorscroll參數(shù)一起使用可設(shè)置光標(biāo)的鎖定選項(xiàng).lock,opt,optval,readonly cursorscroll:設(shè)置光標(biāo)的滾動(dòng)選項(xiàng).staticbind:控制pb是否在檢索數(shù)據(jù)前獲取dbms

21、中的結(jié)果集描繪.dbtextlimit:控制返回的文本字段的最大長(zhǎng)度而不用將文本作為二進(jìn)制大型數(shù)據(jù)對(duì)象來(lái)處理.appname:設(shè)置連接時(shí)所使用的應(yīng)用程序名.host:設(shè)置連接似的工作站名.packetsize:設(shè)置使效勞器向pb傳送數(shù)據(jù)時(shí)所設(shè)置的包大小.secure:設(shè)置是否想使用winnt集成邏輯平安性和平安sql server連接缺省0使用標(biāo)準(zhǔn)平安性,1集成平安性.Powe rBuilder與Oracle 7.3的連接PowerBuilder與Oracle的連接PowerBuilderPB和Oracle分別是前端開(kāi)發(fā)工具和RDBMS的主流產(chǎn)品。PB提供了兩種與Oracle連接的接口:Pow

22、erSoft內(nèi)置的數(shù)據(jù)庫(kù)接口Native Database Interface和ODBC接口。本文介紹使用PB6.0內(nèi)置Oracle接口的方法,包括數(shù)據(jù)描繪文件的設(shè)置、存儲(chǔ)過(guò)程的調(diào)用和存儲(chǔ)過(guò)程作為數(shù)據(jù)窗口數(shù)據(jù)源的操作方法等內(nèi)容,使用的RDBMS的Oracle 7.3。PowerBuilder與Oracle的連接假定已安裝Oracle客戶(hù)端應(yīng)用程序。可用Sqlplus或Tnsping等是否能連接到Oracle數(shù)據(jù)庫(kù),確定在SQLNET配置文件中使用的數(shù)據(jù)庫(kù)別名Database Alias,又稱(chēng)效勞器名,Server Name。如有疑問(wèn),可在Oracle客戶(hù)端程序目錄下tnsname.ora文件中

23、找到。另外保證搜索途徑已包括SQLNET應(yīng)用程序的安裝目錄如C:ORAWIN95BIN。進(jìn)入PB的Database Profiles畫(huà)筆,可看到所有已安裝的數(shù)據(jù)庫(kù)接口PB6.0缺省安裝的是Oracle 7.3版的接口,如使用低版本的Oracle,需在安裝時(shí)指定,選擇"O73 Oracle 7.3",點(diǎn)擊"New"按鈕,進(jìn)入Database Profile Setup對(duì)話框。在"Connection"頁(yè)輸入以下信息:Profile Name:為該Database Profile起一個(gè)有意義的名稱(chēng);ServerTNS:ServerName

24、,其中ServerName為上述數(shù)據(jù)庫(kù)別名效勞器名,如TNS:ORA73;Login ID:Oracle數(shù)據(jù)庫(kù)中實(shí)際的用戶(hù)名,由于PB初次連接到數(shù)據(jù)庫(kù)時(shí)要自動(dòng)建立五個(gè)系統(tǒng)表PowerBuilder Catalog TableBCATTBL,PBCATCOL,PBCATEDT,PBCATFMT,PBCATVLD,存儲(chǔ)表的擴(kuò)展屬性,因此第一個(gè)連接到Oracle的用戶(hù)必須具有建表、給PUBLIC角色受權(quán)等權(quán)限。例如可用SYSTEM用戶(hù)進(jìn)展第一次連接,此后的連接對(duì)用戶(hù)那么無(wú)特殊要求;Password:該用戶(hù)的口令。設(shè)置上述內(nèi)容后,即可連上Oracle。為優(yōu)化數(shù)據(jù)庫(kù)連接,還可設(shè)置以下選項(xiàng):Prompt

25、for Database Information:連接時(shí)是否提示用戶(hù)輸入用戶(hù)名和口令;Generate Trace:?jiǎn)?dòng)DB跟蹤工具,跟蹤連接;Thread Safe:開(kāi)發(fā)需要多線程環(huán)境支持的分布式應(yīng)用時(shí),選擇該項(xiàng)。缺省為未選,適用于非分布應(yīng)用;PBDBMS:與存儲(chǔ)過(guò)程調(diào)用方式有關(guān)的參數(shù)。Oracle為7.2或更高版本時(shí),去除該選項(xiàng),此時(shí)帶IN OUT參數(shù)的存儲(chǔ)過(guò)程可作為數(shù)據(jù)窗口數(shù)據(jù)源。7.2版本以下,選擇該項(xiàng),調(diào)用PBDBMS.Put-Line建立存儲(chǔ)過(guò)程的SQL語(yǔ)句,缺省是選中;Commit on Disconnect:斷開(kāi)連接時(shí),指定提交或回退未提交的事務(wù);Case Sensitive:

26、連接的Oracle效勞器是否區(qū)分大小寫(xiě)。注意該項(xiàng)選中時(shí),所有主鍵、包含主鍵的表名、外鍵須全為大寫(xiě)字符。PowerBuilder Catalog Tables Owner:指定擁有PB系統(tǒng)表的用戶(hù),缺省為"SYSTEM"。假設(shè)要使用多種顯示格式或有效性規(guī)那么,可以在不同的用戶(hù)下建立幾套系統(tǒng)表;Table Criteria:指定滿(mǎn)足哪些條件的表、視圖和同義詞可在"Select Tables"對(duì)話框中顯示出來(lái)。例如DEV用戶(hù)下銷(xiāo)售子系統(tǒng)的表都以SALE開(kāi)頭,那么可以用SALE%、DEV、"TABLE"、"VIEW"指定只

27、顯示DEV用戶(hù)以SALE開(kāi)頭的表和視圖;Asynchronous:選擇該項(xiàng),可在一個(gè)復(fù)雜的SQL語(yǔ)句執(zhí)行過(guò)程中,返回第一行結(jié)果前,切換到其他操作;Number of Seconds to Wait:假設(shè)上一項(xiàng)選中,還可進(jìn)一步通過(guò)該項(xiàng)指定檢索數(shù)據(jù)時(shí),等待數(shù)據(jù)庫(kù)響應(yīng)的時(shí)間;Retrieve Blocking Factor:決定數(shù)據(jù)窗口對(duì)象一次可從數(shù)據(jù)庫(kù)取出的記錄數(shù);Number of SQL Staments Cached:PB可將數(shù)據(jù)窗口對(duì)象產(chǎn)生的SQL語(yǔ)句和嵌入式SQL語(yǔ)句保存在SQL語(yǔ)句緩沖區(qū),該參數(shù)指定緩沖區(qū)為PB保存的SQL語(yǔ)句數(shù)目。該數(shù)值可由下式計(jì)算:SQLCache=效勞器OPEN-

28、CURSORS數(shù)-5保存的游標(biāo)數(shù)-本連接預(yù)期使用的最大游標(biāo)數(shù);Disable Bind:指定是否將輸入變量與SQL語(yǔ)句綁定,此參數(shù)影響PB為數(shù)據(jù)窗口對(duì)象生成INSERT語(yǔ)句的方式;Static Bind:數(shù)據(jù)窗口對(duì)象檢索數(shù)據(jù)前是否檢測(cè)SELECT語(yǔ)句的合法性;在Syntax頁(yè),還可指定日期、時(shí)間的格式等。在Preview頁(yè)可查看Database Profile設(shè)置對(duì)應(yīng)的PowerScript寫(xiě)法。Oracle存儲(chǔ)過(guò)程的使用歸納起來(lái)PB6.0中調(diào)用Oracle存儲(chǔ)過(guò)程有以下四種方法。方法一:以關(guān)鍵字RPCFUNC聲明存儲(chǔ)過(guò)程;方法二:以DECLARE PROCEDURE語(yǔ)句聲明存儲(chǔ)過(guò)程;方法三:

29、以動(dòng)態(tài)SQL語(yǔ)句實(shí)現(xiàn);方法四:調(diào)用函數(shù)PBDBMS.Put-Line。一般情況下,方法一能得到較好的運(yùn)行效率和更完善的功能。因此推薦使用方法一。但是某些類(lèi)型的存儲(chǔ)過(guò)程只能使用其他方法。以下重點(diǎn)介紹方法一和方法二。兩種方法比較起來(lái),有以下幾點(diǎn)主要區(qū)別:1方法一適用于具有IN、OUT和IN OUT參數(shù)的存儲(chǔ)過(guò)程,而方法二僅支持IN和OUT參數(shù),不支持IN OUT參數(shù);2方法一對(duì)參數(shù)的數(shù)目無(wú)限制,方法二最多支持255個(gè)參數(shù);3方法一不支持記錄Recorder的傳遞,方法二可傳遞和接收記錄。方法一操作步驟:1在用戶(hù)對(duì)象畫(huà)筆中創(chuàng)立一個(gè)Class-Standard類(lèi)型的,從Transaction繼承的用戶(hù)

30、對(duì)象。2在此用戶(hù)對(duì)象中,聲明Local External Functions,將存儲(chǔ)過(guò)程以RPCFUNC關(guān)鍵字聲明為外部函數(shù)。在Declare Local External Functions對(duì)話框中按Procedures按鈕選擇要調(diào)用的后臺(tái)存儲(chǔ)過(guò)程,或直接輸入類(lèi)似subroutine TESTlong id,ref string nameRPCFUNC ALIAS FOR"DEV TEST"的語(yǔ)句。例如中DEV TEST的參數(shù)為id IN NUMBER,name IN OUT VARCHAR2。3保存該用戶(hù)對(duì)象。4在Application畫(huà)筆中,進(jìn)入應(yīng)用屬性對(duì)話框,在Va

31、riable Types頁(yè),將上Transaction用戶(hù)對(duì)象設(shè)置為缺省的全局變量SQLCA。5腳本中,編碼調(diào)用相應(yīng)的外部函數(shù)。形式:SQLCA函數(shù)名參數(shù)。如可用"SQLCA TESTln-id,ls-name;"調(diào)用例子中定義的DEV TEST存儲(chǔ)過(guò)程。其中l(wèi)n-id,ls-name為調(diào)用參數(shù)。方法一本卷須知:1由于PB中String類(lèi)型的數(shù)據(jù)長(zhǎng)度是動(dòng)態(tài)分配的,因此對(duì)Ref String類(lèi)型的參數(shù),每次調(diào)用前需要申請(qǐng)足夠的空間。例如上例從輸入的id值檢索name,后臺(tái)聲明的NAME數(shù)據(jù)類(lèi)型為VARCHAR230,每次調(diào)用SQLCA TEST前需要用ls-name=SPAC

32、E30置ls-name為足夠長(zhǎng)度的空串。2類(lèi)似地當(dāng)傳遞的參數(shù)為數(shù)組后臺(tái)稱(chēng)PL/SQL Table時(shí),聲明參數(shù)為相應(yīng)類(lèi)型的動(dòng)態(tài)數(shù)組,并在每次調(diào)用前設(shè)置數(shù)組上界為足夠大的值。例如:DEV用戶(hù)的DEPT包中聲明了TYPE tbl-name IS TABLE OF VARCHAR230INDEX BY BINARY-INTEGER;存儲(chǔ)過(guò)程EMP-OF-DEPTdept-id IN NUMBER,name OUT DEPT.tbl-name返回部門(mén)編寫(xiě)為dept-id的部門(mén)的所有員工,置name數(shù)組中。假定所有部門(mén)的員工數(shù)目不超過(guò)100,那么可用以下語(yǔ)句聲明和調(diào)用DEV.EMP-OF-DEPT:Dec

33、lare External Functions對(duì)話框中:Subroutine EMP-OF-DEPTlong dept-id,ref string nameRPCFUNC ALIAS FORDEV.EMP-OF-DEPTPowerScript腳本中:long ln=dept-id string lsa-namelsa-name100=/置動(dòng)態(tài)數(shù)組lsa-name上界為100 ln-dept-id=2 SQLCA.EMP-OF-DEPTln-dept-id,lsa-name/檢索部門(mén)2的所有員工的名字方法二使用方法:在腳本中參加如下編碼以DEV TEST為例:long ln-id string

34、ls-name ln-id=100 DECLARE test PROCEDURE FOR DEV.TEST:ln-id;/test有一個(gè)IN參數(shù),一個(gè)OUT參數(shù)EXECUTE test;FETCH test INTO:ls-name;方法三使用方法:根據(jù)輸入輸出參數(shù)的不同,PB中的動(dòng)態(tài)SQL語(yǔ)句有四種格式:1無(wú)輸入輸出參數(shù);2只有輸入?yún)?shù),無(wú)輸出參數(shù);3有確定數(shù)目輸入輸出參數(shù);4輸出結(jié)果列的數(shù)目不定。其中第1、第2中格式的動(dòng)態(tài)SQL語(yǔ)句也可用來(lái)調(diào)用簡(jiǎn)單的存儲(chǔ)過(guò)程。1沒(méi)有輸入輸出參數(shù)的存儲(chǔ)過(guò)程。例如DEV DEMO1存儲(chǔ)過(guò)程沒(méi)有輸入輸出參數(shù),可用以下語(yǔ)句調(diào)用:sqlstring=EXECUTE

35、DEMO1EXECUTE IMMEDIATE:sqlstring;2只有輸入?yún)?shù)的存儲(chǔ)過(guò)程。例如DEV.DEMO2name IN VARCHAR2,birthday IN DATEPREPARE SQLSA FROMEXECUTE DEMO2?,?;EXECUTE SQLSA USING:ls-name,:ldt-birthday;假設(shè)是7.2以下版本的Oracle,可用方法四PBDMBS.Put-Line函數(shù)調(diào)用建立存儲(chǔ)過(guò)程。此時(shí)需選上Database Profile中的PBDBMS復(fù)選框。存儲(chǔ)過(guò)程作為數(shù)據(jù)窗口的數(shù)據(jù)源以一個(gè)簡(jiǎn)單數(shù)據(jù)窗口顯示效勞器的系統(tǒng)時(shí)間為例說(shuō)明怎樣創(chuàng)立存儲(chǔ)過(guò)程作為數(shù)據(jù)源的

36、數(shù)據(jù)窗口。1在某個(gè)包如PACK-TYPE中定義日期類(lèi)型的Recorder自定義數(shù)據(jù)類(lèi)型datarec;2創(chuàng)立返回系統(tǒng)時(shí)間的存儲(chǔ)過(guò)程:PROCEDURE get-sysdatasysdt IN OUT PACK-TYPE.datarecIS BEGIN open sysdt for select sysdate from dual;END;3新建數(shù)據(jù)窗口,數(shù)據(jù)源選擇Stored Procedure;4在隨后的Select Stored Procedure對(duì)話框中選擇get-sysdate即可。假設(shè)作為數(shù)據(jù)源的存儲(chǔ)過(guò)程有IN參數(shù),那么這些參數(shù)就是數(shù)據(jù)窗口的檢索參數(shù)Retrieve Argument

37、。Support for Using PowerBuilder and Oracle 8.x and 9.x and 10g Oracle 8.x and 9.x and 10g的pb支持情況PB10連接SQL Server的配置可能初次使用pb10的朋友無(wú)法順利連接到sql server,一方面沒(méi)有了mssql server專(zhuān)用接口了,另一方面數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS換成了"OLE DB",配置起來(lái)有點(diǎn)不順手!下面就來(lái)介紹pb10中用OLE DB連接sql 2000數(shù)據(jù)庫(kù)。在安裝pb10的時(shí)候選擇custom/full方式安裝默認(rèn)的安裝方式不會(huì)安裝ole db接口,next

38、-?假設(shè)你沒(méi)有安裝.net那么不要選擇列表中的ADO.net.項(xiàng)。一路next完成安裝。在數(shù)據(jù)庫(kù)畫(huà)板中找到OLE microsoft OLE DB項(xiàng),在其上右鍵新建一個(gè)配置,在彈出的配置窗口中:profile name:填寫(xiě)配置文件名/任意即可provider:選擇數(shù)據(jù)庫(kù)管理系統(tǒng)類(lèi)型,這里選擇"SQLOLEDB"項(xiàng)data source:效勞器名和之前的版本不太一樣。可以在下拉列表中選擇,也可以填入效勞器名或IP地址如:等。假設(shè)上面的provider不是"SQLOLEDB"那么此下拉列表中可能沒(méi)有選項(xiàng)。user ID:用戶(hù)名。我的用戶(hù)名

39、是默認(rèn)的sa password:對(duì)應(yīng)上面user ID的密碼,我的密碼是空的,所以不填。到這里你就可以順利的連接到sql server了。但是連接到哪個(gè)數(shù)據(jù)庫(kù)呢?上面的參數(shù)都沒(méi)有指明,我也找了半天。不要著急,在Extended里填入"database=數(shù)據(jù)庫(kù)名"就可以了。不要引號(hào)最后的配置文件內(nèi)容為:/Profile his SQLCA.DBMS="OLE DB"SQLCA.LogId="sa"/我的用戶(hù)名是sa SQLCA.AutoCommit=False SQLCA.DBParm="ROVIDER='SQLOLE

40、DB',DATASOURCE='NETMANAGER',PROVIDERSTRING='database=zs'"/我的數(shù)據(jù)庫(kù)名是:zs;datasource后面也可以是IP地址:DATASOURCE=''至此就完成了pb10下用OLE DB連接sql server的配置!輕易不出手,出手必傷人!傷著你了可別怨我哦!4樓|Posted:2005-06-26 23:37 laozang全心全意,為您效勞級(jí)別:P.T ChairMan精華:1發(fā)帖:542聲威:212點(diǎn)P.T Money:942 PB奉獻(xiàn)值:325點(diǎn)

41、在線時(shí)間:109小時(shí)注冊(cè)時(shí)間:2005-04-26最后登錄:2006-12-12在PB中使用FoxPro數(shù)據(jù)庫(kù)的方法重慶工業(yè)管理學(xué)院蔣波-Power Builder是非常優(yōu)秀的用于客戶(hù)/效勞器環(huán)境信息管理系統(tǒng)開(kāi)發(fā)工具,其優(yōu)秀之處不僅是因?yàn)榭梢蚤_(kāi)發(fā)基于客戶(hù)/效勞器形式的系統(tǒng),而且簡(jiǎn)單、易學(xué),Power Builder自身是沒(méi)有數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS的,它是首先通過(guò)不同的驅(qū)動(dòng)程序聯(lián)接不同的數(shù)據(jù)庫(kù),再通過(guò)這種聯(lián)接,實(shí)現(xiàn)對(duì)數(shù)據(jù)的管理。Power Builder同時(shí)隨盤(pán)附帶有一個(gè)小型的數(shù)據(jù)庫(kù)管理系統(tǒng):SQL Anywhere,所以用戶(hù)也可以直接開(kāi)發(fā)用于單機(jī)的完好的信息管理系統(tǒng)。-本人以前曾開(kāi)發(fā)過(guò)基于Fo

42、xPro環(huán)境下的數(shù)據(jù)庫(kù)系統(tǒng),但FoxPro的編程太費(fèi)事,不但要處理數(shù)據(jù)的管理,而且還要花大量的精力處理輸入、輸出的格式等。但有著可視化編程環(huán)境的Power Builder卻不同,處理輸入、輸出是件相當(dāng)簡(jiǎn)單的事情,于是,本人償試用Power Builder來(lái)管理以前的數(shù)據(jù)庫(kù)。c在Power Builder系統(tǒng)中,使用FoxPro的數(shù)據(jù)庫(kù)有兩種方法:一是利用ODBC聯(lián)接FoxPro數(shù)據(jù)庫(kù);另一種方法是將FoxPro的數(shù)據(jù)庫(kù)轉(zhuǎn)換到SQL Anywhere的數(shù)據(jù)格式。-一、利用ODBC聯(lián)接FoxPro數(shù)據(jù)庫(kù)-在Power Builder中,直接訪問(wèn)FoxPro數(shù)據(jù)庫(kù)只能通過(guò)ODBC方式。-在開(kāi)發(fā)環(huán)境下

43、,可以直接在PowerBar畫(huà)板上配置ODBC,聯(lián)接FoxPro數(shù)據(jù)庫(kù),方法如下:?jiǎn)螕鬋onfigure ODBC工具鈕在Installed Drivers目錄框中選擇:Microsoft Foxpro Driver*.dbf單擊"Create"按鈕命名數(shù)據(jù)源名、選擇版本取消"使用當(dāng)前工作目錄"選項(xiàng)單擊選定目錄,選擇被聯(lián)接數(shù)據(jù)庫(kù)所在的目錄確定退出-通過(guò)ODBC方式聯(lián)接的FoxPro的數(shù)據(jù)庫(kù),一定要滿(mǎn)足FoxPro的數(shù)據(jù)庫(kù)格式,即數(shù)據(jù)庫(kù)文件構(gòu)造必須是:"32字節(jié)文件描繪假設(shè)干個(gè)32字節(jié)的字段描繪構(gòu)造描繪完畢符0D記錄1,記錄2,文件完畢符1A&q

44、uot;。由此看來(lái),傳統(tǒng)的DBF數(shù)據(jù)庫(kù)文件均可通過(guò)該方式聯(lián)接。對(duì)于Visual FoxPro環(huán)境下建立的表Table,其構(gòu)造與傳統(tǒng)的數(shù)據(jù)庫(kù)構(gòu)造是不同的,它在字段描繪完畢符0D與記錄之間加上了二百多個(gè)字節(jié)的內(nèi)容,但在未納入VFP的數(shù)據(jù)庫(kù)Dbc之前,其內(nèi)容為"00",此時(shí)仍可以通過(guò)這種方式聯(lián)接,一旦納入數(shù)據(jù)庫(kù)中,該段字節(jié)已被填上了其它內(nèi)容,無(wú)法再聯(lián)接。-在Power Builder應(yīng)用程序中,使用事務(wù)處理對(duì)象來(lái)聯(lián)接數(shù)據(jù)庫(kù),這種事務(wù)處理對(duì)象,即有默認(rèn)的SQLCA,用戶(hù)也可以自己生成,以方便訪問(wèn)多個(gè)數(shù)據(jù)庫(kù)。在程序中使用事務(wù)處理對(duì)象時(shí),一般必須先指明DBMS、DbParm兩個(gè)屬性,對(duì)

45、于FoxPro數(shù)據(jù)庫(kù),還必須指明Database、userid、servername、幾個(gè)屬性,這一點(diǎn)是與訪問(wèn)其他類(lèi)型的數(shù)據(jù)庫(kù)不同的地方。sqlca.dbms="ODBC"/指定聯(lián)接方式ODBC sqlca.database="D:prgpubdata"/指定被聯(lián)接數(shù)據(jù)庫(kù)所在目錄sqlca.userid="public"/用戶(hù)識(shí)別號(hào),都為public sqlca.servername="FOXPRO"/效勞器名:均為FOXPRO sqlca.dbparm="Connectstring='DSN=t

46、scxs'"/數(shù)據(jù)源名connect using sqlca;/施行聯(lián)接-通過(guò)對(duì)FoxPro數(shù)據(jù)庫(kù)的聯(lián)接,用戶(hù)便可以在Power Builder開(kāi)發(fā)環(huán)境下、應(yīng)用程序中使用這些數(shù)據(jù)庫(kù),快速地開(kāi)發(fā)出自己的信息管理系統(tǒng),實(shí)現(xiàn)對(duì)這些數(shù)據(jù)庫(kù)的維護(hù)與管理。-二、將DBF文件轉(zhuǎn)換為SQL Anywhere的DB文件格式-在Power Builder環(huán)境下,附帶有一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)-SQL Anywhere,在Power Builder中利用它,用戶(hù)可以直接建立、維護(hù)數(shù)據(jù)庫(kù)。在SQL Anywhere中,數(shù)據(jù)庫(kù)構(gòu)造雖然與VFP不同,但概念是一致的,即:數(shù)據(jù)庫(kù)是系統(tǒng)中相關(guān)的各種數(shù)據(jù),這些數(shù)據(jù)又因不

47、同用處組織成不同的表,這些表共同構(gòu)成數(shù)據(jù)庫(kù),與傳統(tǒng)的數(shù)據(jù)庫(kù)DBF相類(lèi)比,PB、VFP中的表即是傳統(tǒng)意義的數(shù)據(jù)庫(kù),PB、VFP中的數(shù)據(jù)庫(kù)類(lèi)似于傳統(tǒng)的數(shù)據(jù)庫(kù)DBF文件所在的目錄。SQL Anywhere中提供了將傳統(tǒng)的DBF文件轉(zhuǎn)換為該系統(tǒng)下的數(shù)據(jù)庫(kù)文件DB中的表的工具。為了實(shí)現(xiàn)這一轉(zhuǎn)換,用戶(hù)必須先建立一個(gè)新的表,再將DBF格式的文件內(nèi)容導(dǎo)入該表中。-對(duì)于DBF文件,必須是傳統(tǒng)意義上的數(shù)據(jù)庫(kù),如FoxPro、dBase、FoxBASE環(huán)境下的數(shù)據(jù)庫(kù)文件。該種數(shù)據(jù)庫(kù)文件嚴(yán)格遵循"數(shù)據(jù)文件=數(shù)據(jù)庫(kù)構(gòu)造+數(shù)據(jù)庫(kù)記錄"這一格式。其構(gòu)造如下:"32字節(jié)文件描繪假設(shè)干個(gè)32字節(jié)的

48、字段描繪構(gòu)造描繪完畢符0D記錄1,記錄2,文件完畢符1A"03 62 0A 07 02 00 00 00-81 00 4C 00 00 00 00 00/文件描繪:時(shí)間、長(zhǎng)00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00度、記錄長(zhǎng)、記錄數(shù)4E 41 4D 45 00 00 00 00-00 00 00 43 01 00 00 00/第一個(gè)字段:名、類(lèi)28 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00型、長(zhǎng)、起始位41 55 54 48 4F 52 00 00-00 00 00 43 29 00

49、00 00/第二個(gè)字段0F 00 00 00 00 00 00 00-00 00 00 00 00 00 00 000D 20 50 6F 77 65 72 42-75 69 6C 64 65 72 20 50/構(gòu)造完畢符0D、72 6F 67 72 61 6D 6D 69-6E 67 20 20 20 20 20 20記錄1 20 20 20 20 20 20 20 20-20 20 4A 6F 68 6E 20 536D 69 74 68 20 20 20 20-20 1A/文件完畢符1A-將DBF文件直接轉(zhuǎn)換為PBSQL Anywhere中的表,操作步驟如下:在PB中建立新表翻開(kāi)新建的表

50、單擊數(shù)據(jù)庫(kù)畫(huà)板中的"數(shù)據(jù)操作Data manipulation"按鈕選擇菜單:Rows?Import從"文件類(lèi)型"下拉框中選擇dbaseII&III*.dbf選擇被導(dǎo)入文件所在的目錄及文件名單擊"翻開(kāi)"按鈕系統(tǒng)將翻開(kāi)指定的文件,將該文件中的所有記錄導(dǎo)入新建的表中。-但系統(tǒng)不提供直接將導(dǎo)入數(shù)據(jù)保存在本數(shù)據(jù)庫(kù)表中。假設(shè)要將導(dǎo)入的記錄保存為SQL Anywhere環(huán)境下的數(shù)據(jù)庫(kù)表中,可以先將導(dǎo)入數(shù)據(jù)行以SQL格式保存在.sql類(lèi)型文件中,在利用SQL語(yǔ)句將這些數(shù)據(jù)行插入新表中。步驟如下:按上面所列的步驟導(dǎo)入數(shù)據(jù)庫(kù)DBF文件中的數(shù)據(jù)選

51、擇菜單:File?Save Row As在"存為類(lèi)型"列表框中選擇:SQL選擇保存途徑,輸入保存文件名,單擊保存關(guān)閉"Data manipulation"窗口,回到數(shù)據(jù)庫(kù)畫(huà)板單擊"DB Administration"數(shù)據(jù)庫(kù)管理器選擇菜單:File?Open確信文件類(lèi)型為:SQL*.sql選擇第4步中所保存的文件,單擊"翻開(kāi)"按鈕刪除文件起始部分的第一條SQL語(yǔ)句:CREATE TABLE單擊"Execute"執(zhí)行按鈕,系統(tǒng)將把原數(shù)據(jù)庫(kù)中的所有行插入到新表中。-需要注意的是,新建的表在字段設(shè)置上必

52、須與原DBF文件中的字段保持一致,即:新表中的字段數(shù)必須等于或大于原DBF文件中的字段數(shù)新表中的字段順序要與原文件中的字段順序一樣,即使新表中字段數(shù)更多,但新的字段必須放在最后新表與舊文件中字段名可以不一樣新表中的數(shù)據(jù)類(lèi)型必須與舊表中的數(shù)據(jù)類(lèi)型兼容:字符?字符,數(shù)值?數(shù)字,數(shù)字?字符數(shù)據(jù)格式相一致,如兩個(gè)文件中的日期格式必須一致新表中字段長(zhǎng)度必須能包容舊數(shù)據(jù)庫(kù)文件中的對(duì)應(yīng)字段中的數(shù)據(jù),如:舊數(shù)據(jù)庫(kù)某一字段寬度為C20,但庫(kù)中所有記錄在該字段的實(shí)際最長(zhǎng)為14,那么,新表中的字段寬度至少應(yīng)為C14-假設(shè)你愿意,也可以將原FoxPro中的數(shù)據(jù)庫(kù)先轉(zhuǎn)換到TXT格式文件,再將TXT格式的文件導(dǎo)入SQL

53、Anywhere數(shù)據(jù)庫(kù)表中,不過(guò)TXT文件中一條記錄獨(dú)占一行,各字段間必須用Tab鍵符隔開(kāi),其導(dǎo)入方法與DBF文件中數(shù)據(jù)的導(dǎo)入方法類(lèi)似。-以上兩種方法均可實(shí)如今Power Builder下訪問(wèn)FoxPro數(shù)據(jù)庫(kù),但兩種方法之間有些不同之處:從系統(tǒng)需求來(lái)看:第一種方式使用ODBC直接訪問(wèn)DBF文件,只要Power Builder根本系統(tǒng)即可,不需要安裝數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS;而第二種方式必須安裝SQL Anywhere系統(tǒng)。從運(yùn)行效率來(lái)看:第一種方式速度要慢一些,后一種方式稍快。筆者在應(yīng)用程序中比較了兩種方式在速度上的差異:將FoxPro系統(tǒng)中的一個(gè)有15000余條記錄的數(shù)據(jù)庫(kù),用第一種方式聯(lián)接

54、、在數(shù)據(jù)窗口控制中顯示Retieve記錄,需要6秒鐘左右,后來(lái)又用第二種方式:在SQL Anywhere中新建一個(gè)表,將這15000條記錄導(dǎo)入表中,聯(lián)接、顯示記錄,需要時(shí)間為3-4秒。對(duì)另一個(gè)擁有19萬(wàn)余條記錄的FoxPro數(shù)據(jù)庫(kù)直接使用ODBC,聯(lián)接、顯示的時(shí)間為85秒鐘。-使用Power Builder的主要優(yōu)勢(shì)表達(dá)在建立客戶(hù)/效勞器形式的系統(tǒng)上。對(duì)于一般的單機(jī)系統(tǒng)、規(guī)模較小的系統(tǒng),可能大多數(shù)人不會(huì)想到它。但假設(shè)你覺(jué)得FoxPro太老土,Visual FoxPro又太難學(xué)的的話,不妨試試Power Builder。PB下連接Mysql需要安裝myodbc,詳細(xì)的安裝和設(shè)置請(qǐng)參閱:.y-wi

55、ndows-installer使用DSN方式:ConnectString='DSN=dl;DESC=MySQL ODBC 3.51 Driver DSN;DATABASE=xxxx;SERVER=xxx.xxx.xxx.xxx;UID=xxxxASSWORD=xxxxORT=3306;SOCKET=;OPTION=3;STMT=;'或者ConnectString='DRIVER=MySQL ODBC 3.51 Driver;SERVER=xxx.xxx.xxx.xxx;DATABASE=xxxx;UID=xxxxWD=xxxxORT=3306;OPTION=3'

56、PB中連接Access數(shù)據(jù)庫(kù)的三種方法方式一:SQLCA.DBMS="ODBC"SQLCA.AutoCommit=False SQLCA.DBParm="ConnectString='driver=Microsoft Access Driver*.mdb;DBQ=c:foodmart.mdb'"CONNECT;IF SQLCA.SQLCode 0THEN MessageBox"數(shù)據(jù)庫(kù)連接失敗","請(qǐng)與管理員聯(lián)絡(luò)。錯(cuò)誤號(hào):"+StringSQLCA.SQLCode+"rn錯(cuò)誤原因:"

57、;+SQLCA.SQLErrTextRETURN else MessageBox"數(shù)據(jù)庫(kù)連接成功","如今進(jìn)入系統(tǒng)."end if方式二:SQLCA.DBMS="OLE DB"SQLCA.AutoCommit=False SQLCA.DBParm="ROVIDER='Microsoft.Jet.OLEDB.4.0',DATASOURCE='C:foodmart.mdb'"CONNECT;方式三:建立DSN,通過(guò)ODBC連接。這個(gè)就不用多說(shuō)了。例如:/Profile my_ass SQ

58、LCA.DBMS="ODBC"SQLCA.AutoCommit=False SQLCA.DBParm="ConnectString='DSN=my_ass'"catalog tables could not be created and are not available for use問(wèn)題解決方法:這種情況多見(jiàn)于從SQL server轉(zhuǎn)到Access數(shù)據(jù)庫(kù),用ODBC連接的情況把sqlserver數(shù)據(jù)庫(kù)里的五個(gè)'pb'字母開(kāi)頭的數(shù)據(jù)表導(dǎo)入到access數(shù)據(jù)庫(kù)里去,再連接就不提示了關(guān)于動(dòng)態(tài)注冊(cè)O(shè)DBC數(shù)據(jù)源關(guān)于動(dòng)態(tài)注冊(cè)Ac

59、cess數(shù)據(jù)源/*/函數(shù)名:gf_setodbc_access/功能:完成access數(shù)據(jù)源的注冊(cè)功能/輸入?yún)?shù):/as_database數(shù)據(jù)庫(kù)名/即Access數(shù)據(jù)庫(kù)文件名字,不含擴(kuò)展名/as_path數(shù)據(jù)庫(kù)文件所在的目錄/返回值:/true表示自動(dòng)配置成功/false表示自動(dòng)配置失敗/設(shè)計(jì)者:Adamswater/完成時(shí)間:2005年6月/*boolean lb_rtn string ls_root,ls_root_dsn,ls_root_Jet,ls_root_Engines integer li_rtn string ls_dsnname,ls_dbfullname,ls_driver

60、,temp,ls_version string ls_syspath environment env integer rtn ls_syspath=Space40/獲得*作系統(tǒng)的目錄GetSystemDirectoryAls_syspath,60ls_driver=ls_syspath+"odbcjt32.dll"lb_rtn=true ls_root="HKEY_LOCAL_MACHINEsoftwareodbcodbc.ini"/數(shù)據(jù)源名字為:文件名字+"_DT"ls_dsnname=as_database+"_DT&q

61、uot;ls_root_dsn=ls_root+""+ls_d snname ls_root_Engines=ls_root_dsn+""+"Engines"ls_root_Jet=ls_root_Engines+""+"Jet"ls_dbfullname=as_path+""+as_database+".mdb"/注冊(cè)數(shù)據(jù)源的名字li_rtn=registrysetls_root,ls_dsnname,regstring!,""if li_rtn=-1 then return false end if/注冊(cè)數(shù)據(jù)庫(kù)名字li_rtn=registrysetls_root_dsn,"DBQ",regstring!,ls_dbfullnameif li_rtn=-1 then return false end if/注冊(cè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序li_rtn=registrysetls_root

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論