在C++中,你可以使用ODBC(Open Database Connectivity)库来连接和操作数据库。以下是将上述代码转换为C++的示例:
#include <iostream>
#include <sql.h>
#include <sqlext.h>
SQLHENV henv;
SQLHDBC hdbc;
SQLRETURN retcode;
void HandleError(SQLHANDLE handle, SQLSMALLINT type)
{
SQLCHAR sqlstate[6];
SQLINTEGER nativeerror;
SQLCHAR message[256];
SQLSMALLINT length;
if (SQLError(NULL, handle, 1, sqlstate, &nativeerror, message, sizeof(message), &length) == SQL_SUCCESS) {
std::cerr << "Error: " << message << std::endl;
}
switch (type) {
case SQL_HANDLE_ENV:
SQLEndEnv(handle);
break;
case SQL_HANDLE_DBC:
SQLDisconnect(handle);
SQLFreeHandle(SQL_HANDLE_DBC, handle);
break;
default:
break;
}
SQLEndEnv(henv);
exit(1);
}
int main() {
// Set up the environment handle
retcode = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) {
std::cerr << "Failed to allocate environment handle" << std::endl;
return 1;
}
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER*)SQL_OV_ODBC3, 0);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) {
HandleError(henv, SQL_HANDLE_ENV);
return 1;
}
// Set up the connection handle
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) {
HandleError(henv, SQL_HANDLE_ENV);
return 1;
}
// Connect to the database
const char* dataSource = "Driver={Microsoft Access Driver (*.mdb)};DBQ=<accessPath>;Uid=Admin;Pwd=";
retcode = SQLDriverConnectA(hdbc, NULL, (SQLCHAR*)dataSource, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) {
HandleError(hdbc, SQL_HANDLE_DBC);
return 1;
}
// Perform your database operations here
// Clean up resources
retcode = SQLEndTran(SQL_HANDLE_DBC,hdbc,SQL_COMMIT);
if(retcode != SQL_SUCCESS && retcode !=SQL_SUCCESS_WITH_INFO){
HandleError(hdbc ,SQL_HANDLE_DBC);
return 1;
}
retcode = SQLDisconnect(hdbc);
if(retcode != SQL_SUCCESS && retcode !=SQL_SUCCESS_WITH_INFO){
HandleError(hdbc ,SQL_HANDLE_DBC);
return 1;
}
retcode = SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
if(retcode != SQL_SUCCESS && retcode !=SQL_SUCCESS_WITH_INFO){
HandleError(henv ,SQL_HANDLE_ENV);
return 1;
}
retcode = SQLEndEnv(henv);
if(retcode != SQL_SUCCESS && retcode !=SQL_SUCCESS_WITH_INFO){
std::cerr << "Failed to deallocate environment handle" << std::endl;
return 1;
}
return 0;
}
请注意,以上示例使用了ODBC API,并假设你的系统已经安装了适当的ODBC驱动程序。还需要根据你的实际情况修改连接字符串 <accessPath> 部分,以指定正确的Access数据库文件路径。
内容由零声教学AI助手提供,问题来源于学员提问




