您的位置:首页 > 数据库 > Oracle

使用OTL连接Oracle

2008-12-22 13:39 459 查看
使用OTL连接Oracle9i,不用安装oracle客户端,直接连接Oracle,非常方便实用

步骤:

1,下载一个instanceclient10_2,里面有一些dll文件,还有1个sdk的文件夹,把include和lib/msvc下的东西加入到VC工程目录里面

2,就可以开始写1个Sample的程序了

#include "otlv4.h"

#define OTL_ORA9I

otl_connect db;

BOOL CheckConnect(CString ConnectStr, CString UserName, CString Password)

{

CString Msg;

try

{

db1.server_attach(ConnectStr);

}

catch(otl_exception& p)

{

Msg.Format("%d/n : %s", p.code, p.msg);

MessageBox(Msg, NULL, MB_OK|MB_ICONSTOP);

return FALSE;

}

try

{

if(_stricmp(UserName.GetBuffer(),"sys") == 0)

db1.session_begin(UserName, Password, 0, OCI_SYSDBA);

else

db1.session_begin(UserName, Password, 0, OCI_DEFAULT);

}

catch(otl_exception)

{

db1.server_detach();

return FALSE;

}

return TRUE;

}

void retrieveDataFromDB()

{

if (CheckConnect(connStr,userName,passwd)==TRUE)

{

CString Msg;

try

{

db1.set_max_long_size(20000);

otl_stream i(10, // buffer size. To read XML as CLOBs, it can be set to a size greater than 1

"SELECT USERNAME FROM USERINFO",

// SELECT statement

db1 // connect object

);

int listIndex = 0;

while(!i.eof()){ // while not end-of-data

char *pUname = new char[21];

i >> pUname;

listIndex++;

delete []pUname;

}

}catch(otl_exception &p)

{

Msg.Format("%d/n : %s", p.code, p.msg);

MessageBox(Msg, NULL, MB_OK|MB_ICONSTOP);

}

}else

{

MessageBox(_T("连接数据库失败!!"),_T("提示"),MB_ICONERROR);

}

}

另外还有一些direct::exec()等执行,可以参照otl_example,另外,我发现9i出来的select count(*) .....,不能写到int里,好像数据结构不对
只能select to_char(count(*)) from ....,放到char[]里面了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: