怎样在VC下用ADO连接ORACLE数据库

怎样在VC下用ADO连接ORACLE数据库,第1张

(1)打开VC工具栏Tools菜单下的Options选项,在Directories的标签页中右边的“Show directories for:”下拉列表中选中“Includefiles”,然后在中间列表框中添加你本地安装MySQL的include目录路径。

(2)在上面说到的“Show directories for:”下拉列表中选中“Library files”,然后添加你本地安装MySQL的Lib目录路径。

Lib目录下还有debug和opt两个目录,建议选debug。

(3)在“Project settings->Link:Object/library modules”里面添加“libmysql.lib”。

(4)在stdafx.h里面添加如下的内容:

#include "mysql.h"

#include "winsock.h"

#pragma comment(lib,"libmySQL.lib"

Provider=MSDAORA

这是数据库驱动提供者的声明,MSDAORA是微软提供的Oracle驱动。

图片上报错,第一个是有中文字符;第二个是NULL加了双引号;第三个拼写错误,GetDlgItem,下面几个也是格式错误,最后一个应该注销掉200行,这个应该在退出程序的时候调用,并且应该为CoUninitialize()

VC++连接远程Oracle数据库

1.如果主机A要连接远程主机B的oracle数据库,那么主机A和主机B都要安装oracle数据库,否则会提示找不到安装程序异常(或者主机A安装oralce客户端程序),主机B要配置数据库本地网络服务名和监听程序,用于对外网络开放本地数据库网络服务和监听远程程序通过网络连接本地数据库。

2.oracle数据库中用到的3个配置程序:Database Configuration Assistant 用于配置oracle数据库,如果安装过程中数据库配置或者安装出错,可以直接删除数据库重新配置不用卸载软件重新安装;Net Configuration Assistant用于配置本机数据库网络监听程序和数据库网络服务名,如果连接提示无法识别提供的sid等错误,可以直接删除监听程序重新配置并同时删除本地网络服务名重新配置;Net Manager用于查看Net Configuration Assistant中配置的本地网络服务名和监听程序;1个数据库连接与 *** 作程序:SQL Plus用于连接数据并实现数据系统配置与数据 *** 作。

3.常用命名:cmd中输入lsnrctl status用于查看当前数据库网络服务与监听程序状态,如果听见程序为BLOCKED状态则远程无法连接,正常为READY状态;如果连接不上远程数据库,可以通过此命令查看服务是否开启;oracle数据库插入时间日期,使用to_date('2013-07-05 23:56:25’, 'yyyy-mm-dd hh24:mi:ss’),设置系统时间日期显示格式:alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss’。

4.oracle 11g标准版vc++连接字符串:

strConnect.Format("Provider=OraOLEDB.Oracle.1Password=%sPersist Security Info=TrueUser ID=%s\

Data Source=\"(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = %s)(PORT = %s)) )(CONNECT_DATA = (SID = %s)))\"",

m_sPwd, m_sUid, m_sHost, m_sPort, m_sSid)//123456 system 192.168.37,1521(默认端口),testdata(本地网络服务配置服务名)

try

{

::CoInitialize(NULL)//初始化com环境(必须,否则提示异常)

m_pConnection.CreateInstance(__uuidof(Connection))

m_pConnection->ConnectionTimeout = 10// 设置连接超时10秒

m_pConnection->Open(_bstr_t(LPCTSTR(strConnect)),"","",adModeUnknown)

m_pConnection->CursorLocation = adUseClient//设置使用客户端连接(可以共享读写)

}

catch (_com_error e)

{

AfxMessageBox(e.Description())

//AfxMessageBox(e.ErrorMessage())

return FALSE

}

catch(...)

{

MessageBox("数据库连接失败!", "未知原因", MB_OK|MB_ICONERROR)

return FALSE

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9614804.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存