vc控制台程序连接oracle关键问题
来源:互联网 发布:c语言关键字解释 编辑:程序博客网 时间:2024/05/16 17:13
最近在用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控制台Timer程序
- VC连接ORACLE遇到的问题
- VC 控制台程序中隐藏控制台窗口
- VC控制台程序编写(转)
- vc中调用控制台程序
- VC++控制台程序终止进程
- VC++控制台程序学生成绩管理系统
- VC++ 隐藏控制台程序窗口
- [VC++]控制台程序窗口隐藏
- VC++ TCP网络控制台程序
- VC++ UDP网络控制台程序
- [VC++]控制台程序窗口隐藏
- VC++ TCP网络控制台程序
- VC++ UDP网络控制台程序
- VC++ UDP网络控制台程序
- 自动出题程序(VC++控制台程序)
- JSF的各种框架实现
- Linux TCP/IP 协议栈的关键数据结构Socket Buffer(sk_buff )
- 推荐一款很好看的Table样式-Tablecloth
- 关于内存对齐
- 更改SQL Server服务器默认collation设置(Changing Server Default Collation )
- vc控制台程序连接oracle关键问题
- C#实现组合快捷键设置
- 几种常用编码及其用法介绍
- 关键词volatile小议
- c++声明/定义,静态/非静态,变量/函数
- C++编写Windows服务
- properties资源文件总结
- centos 5.2自动安装的php不支持mysql?
- IE8“开发人员工具”使用详解上(各级菜单详解)