c++封装odbc类

 

 

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
当然,这里是一个简单的示例,展示了如何使用C++封装ODBC的工具类: ```cpp #include <iostream> #include <sql.h> #include <sqlext.h> class ODBCWrapper { public: ODBCWrapper(); ~ODBCWrapper(); bool Connect(const std::string& connectionString); bool Disconnect(); bool Execute(const std::string& query); bool Fetch(); int GetInt(int column); std::string GetString(int column); private: SQLHENV m_env; SQLHDBC m_conn; SQLHSTMT m_stmt; }; ODBCWrapper::ODBCWrapper() : m_env(nullptr), m_conn(nullptr), m_stmt(nullptr) { SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &m_env); SQLSetEnvAttr(m_env, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0); SQLAllocHandle(SQL_HANDLE_DBC, m_env, &m_conn); } ODBCWrapper::~ODBCWrapper() { Disconnect(); SQLFreeHandle(SQL_HANDLE_DBC, m_conn); SQLFreeHandle(SQL_HANDLE_ENV, m_env); } bool ODBCWrapper::Connect(const std::string& connectionString) { SQLCHAR connStrOutput[256]; SQLSMALLINT connStrOutputSize; SQLDriverConnect(m_conn, NULL, (SQLCHAR*)connectionString.c_str(), SQL_NTS, connStrOutput, sizeof(connStrOutput), &connStrOutputSize, SQL_DRIVER_COMPLETE); if (SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_STMT, m_conn, &m_stmt))) { return true; } return false; } bool ODBCWrapper::Disconnect() { if (m_stmt != nullptr) { SQLFreeHandle(SQL_HANDLE_STMT, m_stmt); m_stmt = nullptr; } if (m_conn != nullptr) { SQLDisconnect(m_conn); return SQL_SUCCEEDED(SQLFreeHandle(SQL_HANDLE_DBC, m_conn)); } return false; } bool ODBCWrapper::Execute(const std::string& query) { if (SQL_SUCCEEDED(SQLExecDirect(m_stmt, (SQLCHAR*)query.c_str(), SQL_NTS))) { return true; } return false; } bool ODBCWrapper::Fetch() { if (SQL_SUCCEEDED(SQLFetch(m_stmt))) { return true; } return false; } int ODBCWrapper::GetInt(int column) { int value; SQLGetData(m_stmt, column, SQL_C_SLONG, &value, sizeof(value), nullptr); return value; } std::string ODBCWrapper::GetString(int column) { SQLCHAR value[256]; SQLLEN indicator; SQLGetData(m_stmt, column, SQL_C_CHAR, value, sizeof(value), &indicator); return std::string((const char*)value); } int main() { ODBCWrapper odbc; if (odbc.Connect("DRIVER={SQL Server};SERVER=localhost;DATABASE=mydatabase;UID=myusername;PWD=mypassword")) { if (odbc.Execute("SELECT * FROM mytable")) { while (odbc.Fetch()) { int id = odbc.GetInt(1); std::string name = odbc.GetString(2); std::cout << "ID: " << id << ", Name: " << name << std::endl; } } odbc.Disconnect(); } return 0; } ``` 这个示例展示了一个简单的ODBC封装工具类`ODBCWrapper`,它使用ODBC API来连接数据库、执行查询语句并获取结果。你可以根据自己的需要进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值