使用ADO访问远程ORACLE数据库

wjx_0_2001 2009-02-15 07:00:01
如题:

有以下几个问题不确定:

1、使用ADO,连接字符串怎么写,是远程的。网上我也找过,感觉不怎么对

2、如果,如果本地没有ORACLE数据库的相关驱动,我在本地能访问远程的ORACL库吗?

3、好象ORACLE版本不同,在使用的时候有什么要注意的

-------------

我比较关注几点是:
1、连接字符串中的远程ORACLE数据库的IP地址

2、远程ORACLE数据库的名称

3、其他的,如帐号,密码
----------------------

我在网上找的,不怎么全,感觉都是在网上找的,至于正确与否,不得而知

...全文
575 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjx_0_2001 2009-02-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 liucuiqiang 的回复:]
重写:
先装oracle 10g client精简版,20多M的东西,如果网上找不到,可以发消息找我要,我有自己打包的,不过需要.net 2.0支持.
连接字符串的问题:
10g及以上版本:
Data Source=192.168.1.94:1521/Orcl;Uid=eng;Pwd=eng;
9i及以下:
Data Source=Eng_Beijing;Uid=eng;Pwd=eng;
需要配置tnsnames.ora[放在安装的oracle 10g client下面]如下:
Eng_Beijing=
(DESCRIPTION =
(ADDRESS_LIST =
(A…
[/Quote]


其实,在10G连接字符串完全可以写成 (DESCRIPTION =
(ADDRESS_LIST =
(A…
这个样子的



================

揭贴
wjx_0_2001 2009-02-26
  • 打赏
  • 举报
回复
问题已经解决^

谢谢大家,原因就是连接字符串的问题


后续,我会将原始代码贴上来,供大家参考,呵呵,写的不好,请大家都包含


但怎么说,这也是我实战中测试通过的案例


wjx_0_2001 2009-02-25
  • 打赏
  • 举报
回复
非常谢谢大家……


现在又遇到了个新问题:

是在这里就出现了:

Unhandled exception in *.exe(KERNEL32.DLL);0xE06D7363:Microsoft C++ Exception.

确定之后又是Unhandled exception in *.exe:Acess Violation. 错误。

=============================================================================

try
{
m_pConnection.CreateInstance(__uuidof(Connection));
}
catch(_com_error e)
{
CString strbuf;
strbuf.Format("打开数据库时发生异常 \n:%s",e.ErrorMessage());
AfxMessageBox(e.ErrorMessage());
}

try
{
m_pConnection->CursorLocation=adUseClient; //游标类型
HRESULT hr=m_pConnection->Open(m_strConnect,"","",adModeUnknown);
//执行到Open就跳到CATCH里,然后就出现了上面说的错误
if(!SUCCEEDED(hr))
{
return FALSE;
}


}
catch(_com_error e)
{

if(m_pConnection!=NULL)///
m_pConnection->Close();//这两行,加不加都出现同样的问题
CString strbuf;
strbuf.Format("打开数据库时发生异常 \n:%s",e.ErrorMessage());

//AfxMessageBox(e.ErrorMessage());
AfxMessageBox("中心库连接失败!");
return false;
}
huliang66 2009-02-24
  • 打赏
  • 举报
回复
要用ADO连接必须装客户端:
客户端配置如下:

SERVER = //服务名,自己起,起好后不能再变
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.18.9)(PORT = 1521))
//192.168.18.9、服务器ip地址,1521、端口
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = server)
)
)

//以上最好用ORACLE客户端自己配,配完测试下,如果熟练也可以直接修改这个文件,文件地址:Oracle\ora90\network\ADMIN
连接字符串为:_bstr_t strConnect="Provider=MSDAORA.1;Password=密码;\
User ID=用户名;Data Source=数据库服务名;Persist Security Info=True";
oyljerry 2009-02-24
  • 打赏
  • 举报
回复
http://blog.csdn.net/zqslv007/archive/2008/12/15/3521395.aspx
wjx_0_2001 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 oyljerry 的回复:]
Set oraCn = Server.CreateObject("ADODB.Connection")
oraCn.Open "Provider=MSDAORA.Oracle;Data Source=xxx;user id=xx;password=xx"

添加上服务器ip等
[/Quote]

在哪儿添上IP

wjx_0_2001 2009-02-24
  • 打赏
  • 举报
回复

1、我现在用的是ORACLE驱动,连接字符串应该怎么写?最后能提供一示例:远程访问的


2、如果用ORACLE驱动,是否需要或者说一定要安装ORACLE驱动?


3、如果安装了ORACLE客户端,连接字符串又该怎么写?


------------------------------------

以上,我写的连接字符串,不是我自己的,因为我不会ORACLE

都是在网上找的

---------------------------------------------


wjx_0_2001 2009-02-24
  • 打赏
  • 举报
回复
还有一点

在安装ORACLE 客户端的时候,会有个安装类型的选择,
1、安装即时客户软件

2、安装管理控制台, 管理工具,网络服务,安装程序和基本客户机操作

3、运行时


4、自定义

youhao1999 2009-02-24
  • 打赏
  • 举报
回复
Set oraCn = Server.CreateObject("ADODB.Connection")
oraCn.Open "Provider=MSDAORA.Oracle;Data Source=xxx;user id=xx;password=xx"
wjx_0_2001 2009-02-24
  • 打赏
  • 举报
回复
strCenterDBConn.Format("Provider=OraOLEDB.Oracle.1;
Persist Security Info=True;

Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = %s)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = %s)));

User ID=%s;
Password=%s;",

strCenterIP,
strCenterOdbcName,
strCenterLoginName,
strCenterpwd);
----------------------------------------------------------------------------------------------

上面是连接远程ORACLE数据库的连接字符串,不知道对不对。网上版本太多,而自己有是第一这样写。所以拿来晒晒
----------------------------------------------------------------------------------------------

另外,下面是ADO使用上面生成的连接字符串进行打开数据库,结果是:

在:
m_pConnection.CreateInstance(__uuidof(Connection));

try
{

HRESULT hr=m_pConnection->Open(m_strConnect,"","",adModeUnknown);

if(!SUCCEEDED(hr))
{
return FALSE;
}


}
catch(_com_error e)
{
CString strbuf;
strbuf.Format("打开数据库时发生异常 \n:%s",e.ErrorMessage());

//AfxMessageBox(e.ErrorMessage());
AfxMessageBox("中心库连接失败!");
return false;
}
-------------------------------------------------------------

在HRESULT hr=m_pConnection->Open(m_strConnect,"","",adModeUnknown);出现了错误,获取的错误字符串是:

unknown error 0x800A0E7A

------------------------------------------------------------------------------------------

附注,我刚下载完客户端,还没装前进行的测试,是不是跟这个有关系

-------------------------------------------------------------
wjx_0_2001 2009-02-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 a_rockboy 的回复:]
1.
使用ORACLE驱动 "Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=myUsername;Password=myPassword;"
使用微软驱动 "Provider=msdaora;Data Source=MyOracleDB;User Id=myUsername;Password=myPassword;"

2.
能访问,使用微软驱动,但功能有限制,以前我记得好像无法调用返回动态游标的存储过程。

3.
基本都是ORACLE8以上了吧。没什么特别注意的地方。
[/Quote]

怎么把IP地址怎么加进去?问题1
jxufeng 2009-02-16
  • 打赏
  • 举报
回复
不装客户端可能不能访问,虽然微软信誓旦旦的说可以,但是一般情况还是需要装的。
有一种变通的办法,大约是对客户端程序的dll进行剪裁,放到你应用程序安装包里,网上有资料,我没有试过。
liucuiqiang 2009-02-16
  • 打赏
  • 举报
回复
我一直用我的方法做的,一切OK,不过我是c#
wjx_0_2001 2009-02-16
  • 打赏
  • 举报
回复
非常谢谢大家


大还是很迷糊


到底要不要安装ORACLE相关的驱动或者客户端


有没有人进行过实战?

============
liucuiqiang 2009-02-16
  • 打赏
  • 举报
回复
不好意思,我发现我怎么跑到VC区了,如果对楼主用不上的话,还望原谅.
希望VC/C#差不多.
liucuiqiang 2009-02-16
  • 打赏
  • 举报
回复
重写:
先装oracle 10g client精简版,20多M的东西,如果网上找不到,可以发消息找我要,我有自己打包的,不过需要.net 2.0支持.
连接字符串的问题:
10g及以上版本:
Data Source=192.168.1.94:1521/Orcl;Uid=eng;Pwd=eng;
9i及以下:
Data Source=Eng_Beijing;Uid=eng;Pwd=eng;
需要配置tnsnames.ora[放在安装的oracle 10g client下面]如下:
Eng_Beijing=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = 192.168.1.94)
(PORT = 1521)
)
)
(CONNECT_DATA =
(SID = Orcl)
(SERVER = 192.168.1.94)
)
)
liucuiqiang 2009-02-16
  • 打赏
  • 举报
回复
妈的,写了一大堆,居然服务器忙,日,还不知道对楼主有没有用

Dobzhansky 2009-02-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 oyljerry 的回复:]
2。 不装oracle驱动,就不能用oracle客户端方式连接数据库,只能用微软提供的OLEDB等方式连接...
[/Quote]

msdaora 能够在客户端没有 OCI 的情况下连接数据库?
zteclx 2009-02-15
  • 打赏
  • 举报
回复
要装ORACLE客户端,需要知道远端ORACLE的IP地址。
oyljerry 2009-02-15
  • 打赏
  • 举报
回复
2。 不装oracle驱动,就不能用oracle客户端方式连接数据库,只能用微软提供的OLEDB等方式连接...
加载更多回复(4)

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧