Vc++6.0通过ODBC操作Oracle数据库

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Vc++6.0通过ODBC操作Oracle数据库
Visual C ++6.0 中提供了CDatabase 、CRecordset 、CRecordView、CDBException、Clong Binary 和CFieldExchange 6 个类,这些类封装了ODBC SDK函数,从而使用户可以无需了解SDK函数就可以很方便地操作支持ODBC 的数据库。

Vc++6.0通过ODBC操作数据库(如sqlsever、Access)代码可以直接移植到操作Oracle中,以下这段代码就是一个Vc++6.0连接sqlsever的代码,连接Oracle数据库时,如不需验证,在SQLConnect()加入用户名和密码就可以了,如scott tiger 其连接数据库的过程,就是通过ODBC连接的一般方法
// 定义环境句柄、连接句柄、语句句柄
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
// 定义返回值
SQLRETURN rtcode;
//m_strSqlStmt="123456";
// 分配环境句柄
rtcode = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);
if(rtcode == SQL_SUCCESS || rtcode == SQL_SUCCESS_WITH_INFO)
{
// 设置环境属性(ODBC版本号)
rtcode = SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ ODBC3,0);
if(rtcode == SQL_SUCCESS || rtcode == SQL_SUCCESS_WITH_INFO)
{
// 分配连接句柄
rtcode = SQLAllocHandle( SQL_HANDLE_DBC, henv, &hdbc);
if(rtcode == SQL_SUCCESS || rtcode == SQL_SUCCESS_WITH_INFO)
{
// 设置连接属性(登录超时 = 10s)
SQLSetConnectAttr(hdbc,SQL_ATTR_LOGIN_TIMEOUT,(void* )10,0);
// 连接数据源
LPTSTR lpstrDsn = m_strDB.GetBuffer(m_strDB.GetLength());
rtcode = SQLConnect(hdbc,(SQLCHAR*)lpstrDsn,SQL_NTS,
(SQLCHAR*)"scott",SQL_NTS,
(SQLCHAR*)"tiger",SQL_NTS);
if(rtcode == SQL_SUCCESS || rtcode == SQL_SUCCESS_WITH_INFO)
{
// 分配语句句柄
rtcode = SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);
if(rtcode == SQL_SUCCESS || rtcode == SQL_SUCCESS_WITH_INFO)
{
/******** 查询数据 ********/
// 定义参数
SQLCHAR
sqlSelList[SEL_LIST_LEN],sqlTabList[SEL_TAB_LEN],sqlConList[SEL _CON_LEN];
// 获得参数
CString strList = _GetSelList();
CString strTab = _GetSelTab();
CString strCon = _GetSelCon();
strcpy((char*) sqlSelList ,strList);
strcpy((char*) sqlTabList ,strTab);
strcpy((char*) sqlConList ,strCon);
// 直接执行
char str[2000];
strcpy( str, "SELECT ");
strcat( str, strList);
strcat( str, " FROM ");
strcat( str, strTab);
if( !strCon.IsEmpty())
{
strcat( str, " WHERE ");
strcat( str, strCon);
}
rtcode = SQLExecDirect( hstmt, (SQLCHAR*)str,SQL_NTS);
m_strSqlStmt = CString(str);
UpdateData(FALSE);
// 释放语句句柄
SQLFreeHandle(SQL_HANDLE_STMT,hstmt);
}
// 断开连接
SQLDisconnect(hdbc);
}
// 释放连接句柄
SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
}
}
// 释放环境句柄
SQLFreeHandle(SQL_HANDLE_ENV,henv);。

相关文档
最新文档