最近的任务是封装一个ODBC连接数据库的类,查找了不少资料,对ODBC的函数有所了解,记录一下心得
windows下操作数据库主要的功能有:连接数据库,绑定插入数据,批量绑定插入(多为结构体),读取数据库数据,本文主要简单的使用实现这几个功能用到的底层函数
一.连接数据库
SQLHENV m_henv; //ODBC环境句柄
SQLHDBC m_hdbc; //ODBC连接句柄
SQLHSTMT m_hstmt; //ODBC执行句柄
ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &m_henv);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
{
cout << "分配ODBC环境句柄错误." << endl;
return -1;
}
ret = SQLSetEnvAttr(m_henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
{
cout<< "设置ODBC环境句柄版本号错误" <<endl;
return -1;
}
ret = SQLAllocHandle(SQL_HANDLE_DBC, m_henv, &m_hdbc);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
{
cout << "分配ODBC连接句柄错误." << endl;
return -1;
}
ret = SQLSetConnectAttr(m_hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)timeout, 0);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
{
cout<< "设置ODBC连接属性错误"<<endl;
return -1;
}
windows下操作数据库主要的功能有:连接数据库,绑定插入数据,批量绑定插入(多为结构体),读取数据库数据,本文主要简单的使用实现这几个功能用到的底层函数
一.连接数据库
SQLHENV m_henv; //ODBC环境句柄
SQLHDBC m_hdbc; //ODBC连接句柄
SQLHSTMT m_hstmt; //ODBC执行句柄
ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &m_henv);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
{
cout << "分配ODBC环境句柄错误." << endl;
return -1;
}
ret = SQLSetEnvAttr(m_henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
{
cout<< "设置ODBC环境句柄版本号错误" <<endl;
return -1;
}
ret = SQLAllocHandle(SQL_HANDLE_DBC, m_henv, &m_hdbc);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
{
cout << "分配ODBC连接句柄错误." << endl;
return -1;
}
ret = SQLSetConnectAttr(m_hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)timeout, 0);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
{
cout<< "设置ODBC连接属性错误"<<endl;
return -1;
}