您好,登錄后才能下訂單哦!
Win7 x64平臺,Vb6程序啟動,直接啟用不了;
Vb6比較古老了,應當是石器時代的產物;這錯誤一看應當與oracle環境變量有關,而朋友確認裝了oracle 9i client 32位。
由于程序寫的比較扯淡,沒有對錯誤異常拋出正確的信息,幸好手上還有源碼,按f8單步執行看了一下,下面調試部分直接報:ora-06413:連接未打開。看了代碼,比較通用的一個用ado打開數據庫的代碼,增加紅色部分,重新生成vb程序,省得每次都單步調試。
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
再次啟動程序好了,錯誤直接甩出來:ORA-06413連接未打開
看了下連接字符串:
Provider=MSDAORA;data source=ora;UserId=cxf1;Password=test;Unicode=True
用的msdaora,tnsping ora了一下,沒有問題;那么問題來了,msdaora的問題?這個驅動在官方確實有說明
https://www.microsoft.com/en-US/download/details.aspx?id=20065
只有2003和xp的版本了,不過后來檢查
C:\Program Files (x86)\Common Files\System\Ole DB
貌似64位下直接有這三個文件:msdaOra.dll,msdaosp.dll,msdaOrar.dll 并不需要額外的驅動;
但既然懷疑到這了,嘗試用了OraOleDb.Oracle.1,換了個錯誤 ,居然報tns-12514,看樣子還是與環境變量有關。后面的故事比較無聊,純屬安裝卸載,卸了ora92版本,重新安裝oracle 10g client,依舊,卸載10g client裝11g 依舊,32位都不行,要不試試64位,裝上11g 64位,直接報驅動沒啟用:
有點病急亂投醫了,好了,理理思路:
1 64位肯定不行,因為那時32位的vb壓根兒不知道64位的事情;
2 10g的32位client既然能到tsn-12514證明,這個驅動應當是可用的,只是環境變量不對;
重新上了下oracle的官網,說提供了32位的odac驅動,
http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html
好家伙,直接下載了個10G的最低版本,為啥最低,各位懂的,vb6這個元老用老的不出錯;結果裝不上,正常,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裝上了,測試ODBC,一切正常,萬事OK,一開程序,依舊報ora-06413.
沒轍了,看看sqlnet.log,發現:
*********************************************************************** 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.
基本猜出問題所在了(哎,靠猜的-_-!!)。
打開調式程序,再次數據鏈接屬性:
終于成功了(可以放×××了)。
沒事別在路徑里加括號,不然你會死的很沒面子;代碼里加點異常處理也不會增加很大的工作量,亦可造福后人;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。