控制台连接oracle命令行,vc控制台程序连接oracle关键问题

最近在用vc6开发一个控制台程序连接oracle数据库,程序编译通过,但运行是,创建_ConnectionPtr时总是创建不成功,现终于找到了问题所在,下面是测试成功的代码。

#include

#include

#include "main.h"

//#import "C:\Program Files\Common Files\System\ado\msado15.dll"

no_namespace rename("EOF","adoEOF")

using namespace std;

void main()

{

::CoInitialize(NULL);

_ConnectionPtr myConn;

myConn.CreateInstance("ADODB.Connection");

//微软提供连接字符串

char strConn[] = {"Provider=MSDAORA;Data

Source=oracle;User ID=system; Password=zjzjzh;"};

HRESULT hr =

myConn->Open((_bstr_t)strConn,"","",adConnectUnspecified);

if(FAILED(hr))

{

//AfxMessageBox("连接数据库错误");

cout<

return;

}

//打开一个连接

_RecordsetPtr myRecord;

myRecord.CreateInstance("ADODB.Recordset");

//打开结果集

myRecord->Open("SELECT * FROM

HR.JOBS",myConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

//操作结果集

VARIANT var;

VariantInit(&var);

CString strJobId;

while(myRecord->adoEOF ==

FALSE)

{

var =

myRecord->GetCollect("JOB_ID");

if(var.vt != VT_NULL)

{

strJobId =

(LPCSTR)(_bstr_t)var;

//AfxMessageBox(strJobId);

cout<

myRecord->MoveNext();

}

}

//结构使用完成关闭结果集

if(myRecord->State == TRUE)

{

myRecord->Close();

}

myRecord = NULL;

//关闭数据库连接

if(myConn->State == TRUE)

{

myConn->Close();

}

myConn = NULL;

CoUninitialize();

}

问题出在,在初始化ole库的时候,不能使用afxoleinit函数,要用CoInitialize,否则在下面的创建连接和结果集对象都会创建不成功。

另:1、若要在控制台程序中加入mfc的的非ui类,可以包含afx。h头文件,并在项目设置的编译选项里选择/MD选项就可以了,

2、若包含了iostream头文件,则引入语句一定要在using namespace

std的前面,否则编译的时候会出现错误。

以上是我在开发oracle程序的时候的一些体会,希望对大家有所帮助。

开发mfc的程序没有这样的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值