为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:Windows11
【CPU】:inter-12500H
【问题描述】*:
我目的是在Windows平台不依赖QT等第三方库进行ODBC数据库操作的C++动态库的开发。在Windows11平台,编译使用ODBC接口访问达梦数据库的时候,无法链接dmoci.lib文件导致无法编译通过,有合适的解决方案吗,我的源代码是:
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <iostream>
void ConnectToDMDB() {
SQLHENV henv;
SQLHDBC hdbc;
SQLRETURN ret;
// 初始化 ODBC 环境
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
// 分配连接句柄
SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
// 连接到达梦数据库
const char* dsn = "localhost"; // 数据源名称
const char* user = "SYSDBA"; // 用户名
const char* password = "admin123456"; // 密码
// 使用 SQLDriverConnect 连接
ret = SQLDriverConnect(
hdbc,
NULL,
(SQLWCHAR*)dsn,
SQL_NTS,
NULL,
0,
NULL,
SQL_DRIVER_COMPLETE);
if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO) {
std::cout << "Connected to DM Database successfully!" << std::endl;
}
else {
std::cerr << "Error connecting to DM Database!" << std::endl;
}
// 清理资源
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
}
int main() {
ConnectToDMDB();
return 0;
}
缺少这个包的话,可以找对应项目的人申请下这个数据库版本的
使用ODBC连接数据库可以参考一下以下链接
https://eco.dameng.com/document/dm/zh-cn/app-dev/c_c++_odbc.html