• 大小: 30.7 KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-08-30
  • 语言: 其他
  • 标签: ODBC  

资源简介

对ODBC中的方法进行了封装,包括数据库连接的打开、关闭,结果集的操作等等,附有文档

资源截图

代码片段和文件信息

//
//  MODULE:   odbccore.cpp
//
// AUTHOR: Carlos Antollini 
//
//  mailto: cantollini@hotmail.com
//
// Date: 08/21/2001
//
// Version 1.11
// 

#include “odbccore.h“

/////////////////////////////////////////////////////////////
//
// CODBCDatabase Class
//

void CODBCDatabase::SQLAlloc()
{

SQLAllocHandle(SQL_HANDLE_ENV SQL_NULL_HANDLE &m_hEnv);
SQLSetEnvAttr(m_hEnv SQL_ATTR_ODBC_VERSION (void*)SQL_OV_ODBC3 0); 
SQLAllocHandle(SQL_HANDLE_DBC m_hEnv &m_hDbc); 
}

void CODBCDatabase::SQLFree()
{
SQLFreeHandle(SQL_HANDLE_DBC m_hDbc);
SQLFreeHandle(SQL_HANDLE_ENV m_hEnv);
m_hDbc = NULL;
m_hEnv = NULL;
}

void CODBCDatabase::Close()
{
m_bIsConnected = FALSE;
if(m_hDbc == NULL)
return;
SQLDisconnect(m_hDbc);
SQLFree();
}

BOOL CODBCDatabase::Open(CHAR* szDSNCHAR* szUser CHAR* szPass)
{
SQLRETURN ret;

if(m_lConnectionTimeout > 0)
SQLSetConnectAttr(m_hDbc SQL_ATTR_CONNECTION_TIMEOUT (SQLPOINTER)m_lConnectionTimeout 0);

SQLSetConnectAttr(m_hDbc SQL_ATTR_LOGIN_TIMEOUT (SQLPOINTER)m_lLoginTimeout 0);

ret = SQLConnect(m_hDbc 
(SQLCHAR*)szDSN 
sizeof(szDSN) 
(SQLCHAR*)szUser 
sizeof(szUser) 
(SQLCHAR*)szPass 
sizeof(szPass));

m_bIsConnected = ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO;
return m_bIsConnected;
}

BOOL CODBCDatabase::Browse(UCHAR* szConnStrIn UCHAR* szConnStrOut)
{
SQLRETURN ret;
SWORD swLenOut = 0;

ret = SQLBrowseConnect(m_hDbc 
(SQLCHAR*)szConnStrIn 
sizeof(szConnStrIn) 
(SQLCHAR*)szConnStrOut 
MAX_BUFFER 
&swLenOut);

m_bIsConnected = ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO;
return m_bIsConnected;
}

void CODBCDatabase::SetConnectionTimeout(LONG nSeconds)
{
if(m_hDbc)
SQLSetConnectAttr(m_hDbc SQL_ATTR_CONNECTION_TIMEOUT (SQLPOINTER)nSeconds 0);

m_lConnectionTimeout = nSeconds;
}

BOOL CODBCDatabase::DriverConnect(CHAR* szConnStr CHAR* szConnStrOut HWND hWnd enum drvCompletion drvConn)
{

SQLRETURN ret;
SQLSMALLINT pcbConnStrOut;

if(drvConn == sqlPrompt && hWnd == NULL)
return FALSE;

if(m_lConnectionTimeout > 0)
SQLSetConnectAttr(m_hDbc SQL_ATTR_CONNECTION_TIMEOUT (SQLPOINTER)m_lConnectionTimeout 0);

SQLSetConnectAttr(m_hDbc SQL_ATTR_LOGIN_TIMEOUT (SQLPOINTER)m_lLoginTimeout 0);

ret = SQLDriverConnect(m_hDbc 
hWnd 
(SQLCHAR*)szConnStr 
SQL_NTS 
(SQLCHAR*)szConnStrOut
sizeof(szConnStrOut) 
&pcbConnStrOut 
(SQLUSMALLINT)drvConn);

m_bIsConnected = ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO;
return m_bIsConnected;
}

void CODBCDatabase::SetReadOnly(BOOL bReadOnly)
{

SQLSetConnectAttr(m_hDbc SQL_ATTR_ACCESS_MODE (SQLPOINTER)(bReadOnly? SQL_MODE_READ_ONLY : SQL_MODE_READ_WRITE) 0);
}

LONG CODBCDatabase::GetConnectionTimeout()
{
LONG nSeconds;

SQLGetConnectAttr(m_hDbc 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       8720  2001-08-24 15:29  odbccore.cpp

     文件       4249  2001-08-24 15:29  odbccore.h

     文件     102400  2008-09-10 13:54  odbcconn.doc

----------- ---------  ---------- -----  ----

               115369                    3


评论

共有 条评论