找回密码
 加入
搜索
查看: 7194|回复: 19

[网络通信] win2008_r2 64位操作系统无法连接oracle数据库问题

[复制链接]
发表于 2016-11-16 15:06:40 | 显示全部楼层 |阅读模式
操作系统:windows 2008 R2 企业版 64位
数据库:oracle 10g

代码如下:
        连接oracle:
        $Conn = ObjCreate("ADODB.Connection")
        $Conn.open("DRIVER={MICROSOFT ODBC FOR ORACLE};Server=Orcl_70;UID=system;PWD=hb;")
        ;$Conn.open("DRIVER={Oracle in OraDb10g_home1};SERVER=127.0.0.1/ORCL_70;UID=system;PWD=hb;DBQ=127.0.0.1/ORCL_70")
        ;$Conn.open("DRIVER={Oracle in OraDb10g_home1};Dbq=127.0.0.1/YGT3CS;UID=system;PWD=hb;")
       
        $Conn.execute("use YGCS") ;指定需要操作的库
        $RS = ObjCreate("ADODB.RecordSet")
        $RS.activeconnection = $Conn
        $RS.open("select xtcsbz from aboss.txtzt;")

------------------------------------------------------------------------------------------------------------------------------------------------------
        连接SQL Server
        $Conn = ObjCreate("ADODB.Connection")
        $Conn.open("DRIVER={SQL Server};SERVER=10.105.0.169;UID=sa;PWD=hbzq;")
        $Conn.execute("use OIW") ;指定需要操作的库

我连接sql server是可以的,没有问题,但是连接oracle就不行,用了上面的3种方法都失败了。感觉问题是出在DRIVER的字段上,但是不知道怎么解决,也不知道怎么定位错误的原因。
32位的ODBC 数据源管理器中也已经配置过了。
在论坛里翻了几个相关的帖子,但是没有针对的解决办法,百度也查过了,无解。请大神指点。
另:用pl sql是可以正常连接到oracle的。
 楼主| 发表于 2016-11-16 17:15:59 | 显示全部楼层
有相同环境的兄弟,能不能验证一下oracle的这段代码,确认一下是代码的问题还是我系统的问题?

或者谁发我一段能正常使用的代码给我!
发表于 2016-11-17 02:56:24 | 显示全部楼层
回复 2# cmh229

https://support.microsoft.com/zh-tw/kb/310985

本文將逐步告訴您,如何使用 Visual Basic.NET 中的 ODBC.NET 管理提供者。本文也包含可供您存取您的資料範例連接字串。

ODBC.NET 資料提供者是以 Microsoft.NET Framework 軟體開發套件 (SDK) 附加元件。它提供對原生的 ODBC 驅動程式的存取相同的方式,OLE DB.NET 資料提供者提供原生 OLE DB 提供者的存取。雖然 ODBC.NET 資料提供者要使用所有相容的 ODBC 驅動程式,它只經過下列驅動程式︰•Microsoft SQL ODBC 驅動程式
•Oracle Microsoft ODBC 驅動程式
•Microsoft Jet ODBC 驅動程式
附註︰ 如果沒有安裝.NET Framework SDK (這是隨附於 Visual Studio.NET),本下載安裝就會失敗。本下載安裝程式的一部分, Microsoft.Data.ODBC命名空間使用隨附於.NET Framework SDK Gacutil.exe 公用程式將新增到全域組件快取。

回到頁首

下載 ODBC.NET 提供者
1.從下列 Microsoft 網站下載 ODBC.NET 管理提供者︰
http://www.microsoft.com/downloa ... 3-a062-d165078e32b1

2.ODBC.NET 資料提供者也需要安裝 Microsoft 資料存取元件 (MDAC) 2.7 或更新版本。您可以從下列 Microsoft 網站下載最新版的 MDAC:
http://msdn.microsoft.com/en-us/data/aa937729.aspx

3.安裝 ODBC.NET 資料提供者之後,請前往下一節,以建立專案。


Dim cn as OdbcConnection
     cn= New OdbcConnection ("Driver = {Microsoft ODBC for Oracle};" & _
                             "Server=myOracleserver;uid=myuid;pwd=mypwd")
     Dim myString as String = "Select * from Customers"
     dim cmd as OdbcCommand = New OdbcCommand(myString)
     cn.open()
     MsgBox "Connected"
     cn.Close
发表于 2016-11-17 02:59:31 | 显示全部楼层
回复 2# cmh229


    Oracle
1. Driver={Microsoft ODBC for Oracle};Server=資料庫;[Uid=使用者名稱;Pwd=密碼;]
2. Provider=OraOLEDB.Oracle;Data Source=資料庫;[User Id=使用者名稱;Password=密碼;]
 楼主| 发表于 2016-11-17 10:15:58 | 显示全部楼层
非常感谢楼上的解答。
有几个疑问再确认一下,
1. 答复中提到的“ODBC.NET 提供者”是必须的吗?给的链接已经失效了,网上找了一圈也没找到下载的地方。
2. 原文链接我也读了一遍,因为是机器翻译的且是繁体的语法,理解起来很费力。
3. 操作系统是不是要安装.NET Framework,我的系统里没有安装,不知道有没有关系。

不知道有没有更简单的方法来解决这个问题
发表于 2016-11-17 10:27:51 | 显示全部楼层
回复 5# cmh229

基本的概念是這樣的.....

在WINDOWS 下 要連接 其他的 幾乎都是透過ODBC 運作

首先 要先確認 你的ODBC 運作正常......

先別管程式  如果你有工具  可以確認是 透過 ODBC 運作 且  可以 正常連接.....
那就表示你的驅動沒問題  那就 只是連線字串的問題......

但是 如果 你無法確認你的ODBC 運作正常  那就得 考慮是不是 先裝個 比較沒問題的驅動....

你可以從我的例子中發現  微軟提供的範例使用的是 Microsoft ODBC for Oracle
簡單的說 既然已經提供 範例 就表示 連線字串不會有問題了  剩下的就是 如何安裝這個驅動
這點 我也找不到下載的地方 ,查詢結果 似乎都指向  Oracle 本身原廠會提供.....  

可以去找看看 是否有 Microsoft ODBC for Oracle

以你上面敘述  似乎  目前應該是正確驅動的  我覺得剩下的就是連線字串問題
你何不仿照 下面的連線字串方法  修改你的連線字串  不要寫得那麼複雜  先通 再說....
发表于 2016-11-17 10:30:03 | 显示全部楼层
回复 5# cmh229

請先提供你的ODBC 照片...... PS  ODBC 指的是 你個人電腦上的 ODBC 而不是SERVER 上的喔
发表于 2016-11-17 10:39:02 | 显示全部楼层
 楼主| 发表于 2016-11-17 11:33:16 | 显示全部楼层

这个是我的电脑的32位的ODBC。


这个驱动可以正确链接,但是不知道链接字符串怎么加到代码里,试了几次都失败了。


这个没有验证方式,不知道能不能正常连接。

另:有个问题我一直很疑惑,64位系统有2个ODBC驱动,因为32位的oracle不能连接64位的odbc,所以我的机器上也没有对64位odbc做配置。而32位的odbc配置如上面的截图。在我用autoit调用ado.connection的时候到底是用64位的ODBC,还是32位的ODBC?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2016-11-17 11:37:16 | 显示全部楼层
回复 9# cmh229


    64位元電腦 必須要使用 64位元的ODBC

如果你安裝了32位元的 是沒用的
发表于 2016-11-17 11:38:47 | 显示全部楼层
回复 9# cmh229

我想看的是 驅動程序 的 那個頁面  那裏才有 驅動的名子
 楼主| 发表于 2016-11-17 12:00:01 | 显示全部楼层

这个页面吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2016-11-17 13:03:42 | 显示全部楼层
回复 12# cmh229


    是 阿 所以你的驅動是 Oracle in OraDb10g_home1  這樣應該沒錯


建議 你安裝64位元的 或者 換到  32位元系統測試
发表于 2016-11-17 16:16:51 | 显示全部楼层
楼上正解.......
发表于 2016-11-18 10:39:21 | 显示全部楼层
回复 12# cmh229

問題解決了嗎??
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-3-29 00:18 , Processed in 0.089425 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表