在C++中连接各种数据库,需要使用相应的数据库驱动。以下是使用ODBC连接数据库的例子:
- 安装数据库驱动。
- 包含头文件
#include <odbcinst.h>
。 - 使用
SQLAllocHandle
分配环境句柄,SQLConnect
连接数据库。
以下是连接SQL Server、MySQL、Oracle、ACCESS、SQLite 和 PostgreSQL的示例代码:
SQL Server:
// 需要安装SQL Server ODBC驱动
#include <odbcinst.h>
int main() {
SQLHENV hEnv = NULL;
SQLHDBC hDbc = NULL;
SQLRETURN retcode;
// 分配环境句柄
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv);
SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
// 分配连接句柄
SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDbc);
// 连接数据库
retcode = SQLConnect(hDbc, (SQLCHAR*)"DSN=mydsn", SQL_NTS, (SQLCHAR*)"user", SQL_NTS, (SQLCHAR*)"password", SQL_NTS);
// 断开连接和释放句柄
SQLDisconnect(hDbc);
SQLFreeHandle(SQL_HANDLE_DBC, hDbc);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
return 0;
}
MySQL:
// 需要安装MySQL ODBC驱动
#include <odbcinst.h>
int main() {
// MySQL的ODBC连接类似SQL Server
// 只是DSN的名称和认证信息会有所不同
// ...
}
Oracle:
// 需要安装Oracle ODBC驱动
#include <odbcinst.h>
int main() {
// Oracle的ODBC连接类似SQL Server
// 只是DSN的名称和认证信息会有所不同
// ...
}
ACCESS:
// 需要安装Microsoft Access ODBC驱动
#include <odbcinst.h>
int main() {
// Access的ODBC连接类似SQL Server
// 只是DSN的名称和认证信息会有所不同
// ...
}
SQLite:
#include <sqlite3.h>
int main() {
sqlite3* db;
int res = sqlite3_open("database.db", &db);
if (res){
std::cerr << "Error opening database: " << sqlite3_errmsg(db) << std::endl;
sqlite3_close(db);
return 1;
}
// 执行SQL语句...
sqlite3_close(db);
return 0;
}
PostgreSQL:
// 需要安装PostgreSQL ODBC驱动
#include <odbcinst.h>
int main() {
// PostgreSQL的ODBC连接类似SQL Server
// 只是DSN的名称和认证信息会有所不同
// ...
}
每种数据库连接的具体实现细节可能会有所不同,包括DSN(数据源名称)的配置、连接字符串的构建以及可能需要的额外参数。安装对应数据库的ODBC驱动后,可以参照上述模板代码进行连接。