最近在用vc6开发一个控制台程序连接oracle数据库,程序编译通过,但运行是,创建_ConnectionPtr时总是创建不成功,现终于找到了问题所在,下面是测试成功的代码。
#include <iostream>
#include <afx.h>
#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<<"连接数据库错误"<<endl;
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<<strJobId.GetBuffer(strJobId.GetLength())<<endl;
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的程序没有这样的问题。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zjwhcn/archive/2009/06/03/4239414.aspx
分享到:
相关推荐
控制台程序,能增删除 改查,支持文件读写。
VC 几种连接ORACLE的方法VC 几种连接ORACLE的方法VC 几种连接ORACLE的方法VC 几种连接ORACLE的方法VC 几种连接ORACLE的方法
这里实现ADO连接数据库的最简单代码,有利于初学数据库编程人员的参考,希望能对你有帮助!!!
VC_中连接Oracle数据库的几种方法
VC使用ADO连接Oracle数据库 内涵详细使用说明,可以按照说明配置学习使用
从vc连接到oracle数据库从vc连接到ora从vc连接到oracle数据库cle数据库
基于vc的odbc连接oracle实例, 源码,对于学习者很直观的
VC ODBC 连接远程 ORACLE数据库
VC控制台改变颜色自己找的感觉有用,比较给力哦
VC2008创建控制台程序方法,用vc2008如何创建按台程序
在VC控制台程序没有输入明文显示暗文(密码输入)的函数,此函数实现了星号密码输入的功能!
vc连接oracle数据库,使用Oracle提供的occi 代码中将连接类封装到了dll中
自己整理的一点VC控制台播放wav声频的代码
最初的代码,也是我从csdn下载的,最初的代码是c风格,我引入了三个经典的Ado类,增加了一版C++风格的连接,查询。已经在我的机器上调试通过。连接字符串是从tns配置文件里,直接拷过来的,连接字符串写... 连接oracle
vc 控制台 鼠标 操作 vc 控制台 鼠标 操作 vc 控制台 鼠标 操作
介绍了用vc6给程序添加ico图标的两种方法,即使控制台程序也能添加图标,个人建议用第一种方法。
用VC++ 6.0(VS2005、VS2008、VS2010亦可)通过ODBC远程连接Oracle数据库。 包括说明文档以及demo程序。 原创,谢绝在非CSDN上转载。
本程序为vc下的控制台绘图,包含控制台绘图的库,将EasyX_v20100825中的include文件放到vc安装目录下的include文件夹中即可实现控制台绘图。 仅能够处理各种位数的bmp位图图像,涉及图像处理中的边缘检测、中值滤波...
在visual C++ 6.0环境下使用控制台应用程序绘制三角形,实现了三角形的旋转,平移,缩放