您好,登錄后才能下訂單哦!
Win7 x64平臺(tái),Vb6程序啟動(dòng),直接啟用不了;
Vb6比較古老了,應(yīng)當(dāng)是石器時(shí)代的產(chǎn)物;這錯(cuò)誤一看應(yīng)當(dāng)與oracle環(huán)境變量有關(guān),而朋友確認(rèn)裝了oracle 9i client 32位。
由于程序?qū)懙谋容^扯淡,沒有對(duì)錯(cuò)誤異常拋出正確的信息,幸好手上還有源碼,按f8單步執(zhí)行看了一下,下面調(diào)試部分直接報(bào):ora-06413:連接未打開??戳舜a,比較通用的一個(gè)用ado打開數(shù)據(jù)庫(kù)的代碼,增加紅色部分,重新生成vb程序,省得每次都單步調(diào)試。
Function OpenDBConnection(cn AsADODB.Connection, strCnn As String) As Boolean On Error GoTo OpenMainSybaseError Set cn = New ADODB.Connection With cn .CursorLocation = adUseClient .ConnectionString = strCnn .ConnectionTimeout = 10 .Properties("Prompt") = adPromptNever .Open End With OpenDBConnection = True MsgBox "dbconnectstring is " + strCnn Exit Function OpenMainSybaseError: MsgBox Err.Description OpenDBConnection = False End Function
再次啟動(dòng)程序好了,錯(cuò)誤直接甩出來:ORA-06413連接未打開
看了下連接字符串:
Provider=MSDAORA;data source=ora;UserId=cxf1;Password=test;Unicode=True
用的msdaora,tnsping ora了一下,沒有問題;那么問題來了,msdaora的問題?這個(gè)驅(qū)動(dòng)在官方確實(shí)有說明
https://www.microsoft.com/en-US/download/details.aspx?id=20065
只有2003和xp的版本了,不過后來檢查
C:\Program Files (x86)\Common Files\System\Ole DB
貌似64位下直接有這三個(gè)文件:msdaOra.dll,msdaosp.dll,msdaOrar.dll 并不需要額外的驅(qū)動(dòng);
但既然懷疑到這了,嘗試用了OraOleDb.Oracle.1,換了個(gè)錯(cuò)誤 ,居然報(bào)tns-12514,看樣子還是與環(huán)境變量有關(guān)。后面的故事比較無聊,純屬安裝卸載,卸了ora92版本,重新安裝oracle 10g client,依舊,卸載10g client裝11g 依舊,32位都不行,要不試試64位,裝上11g 64位,直接報(bào)驅(qū)動(dòng)沒啟用:
有點(diǎn)病急亂投醫(yī)了,好了,理理思路:
1 64位肯定不行,因?yàn)槟菚r(shí)32位的vb壓根兒不知道64位的事情;
2 10g的32位client既然能到tsn-12514證明,這個(gè)驅(qū)動(dòng)應(yīng)當(dāng)是可用的,只是環(huán)境變量不對(duì);
重新上了下oracle的官網(wǎng),說提供了32位的odac驅(qū)動(dòng),
http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html
好家伙,直接下載了個(gè)10G的最低版本,為啥最低,各位懂的,vb6這個(gè)元老用老的不出錯(cuò);結(jié)果裝不上,正常,10g嘛,裝在64位上要更改oraparam.ini,
[Certified Versions]
#You can customise error message shown for failure,provide value for CERTIFIED_VERSION_FAILURE_MESSAGE
Windows=4.0,5.0,5.1,5.2,6.0,6.1
好,OK裝上了,測(cè)試ODBC,一切正常,萬事OK,一開程序,依舊報(bào)ora-06413.
沒轍了,看看sqlnet.log,發(fā)現(xiàn):
*********************************************************************** Fatal NI connect error 6413, connecting to: (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=115.29.114.XXX)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)(CID=(PROGRAM=C:\test()\ttest.exe)(HOST=SNOWIND-PC)(USER=snowind)))) VERSION INFORMATION: TNSfor 32-bit Windows: Version 10.2.0.1.0 - Production Time: 12-12月-2016 21:20:45 Tracing not turned on.
基本猜出問題所在了(哎,靠猜的-_-!!)。
打開調(diào)式程序,再次數(shù)據(jù)鏈接屬性:
終于成功了(可以放×××了)。
沒事別在路徑里加括號(hào),不然你會(huì)死的很沒面子;代碼里加點(diǎn)異常處理也不會(huì)增加很大的工作量,亦可造福后人;
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。