C/S程序, 如何连接达梦数据库。

zjhss1981 2019-11-12 02:30:16
本机环境:WIN10 64;  
尝试了两种方式,
1、 本机装64位达梦8.1, ODBC配置没问题, 但PB得数据库连不上, 原因: PB9为32位, 达梦客户端64位,不匹配。
2、本机装32位客户端8.1,ODBC配置连不上,原因不明。

有谁最近在玩国产达梦吗? 或者已经有玩过得朋友,PB应该如何来连接,还请不吝赐教。谢谢。
...全文
351 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
原谅不美好。 2021-07-08
  • 打赏
  • 举报
回复

可以指教一下怎么连接的吗

YongApple 2020-04-16
  • 打赏
  • 举报
回复
LOG_ERROR("SQL_NEED_DATA failed! 111 cbConnStrOut=" << cbConnStrOut);
总是输出这行;
YongApple 2020-04-16
  • 打赏
  • 举报
回复
long V_OD_erg; // result of functions 存放错误代码

// allocate Environment handle and register version
V_OD_erg = SQLAllocHandle( SQL_HANDLE_ENV, SQL_NULL_HANDLE, &V_OD_Env_ );
if ( (V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO) )
{
LOG4CPLUS_ERROR(gLogger, __FUNCTION__ << " Error AllocHandle");
return false;
}

V_OD_erg = SQLSetEnvAttr( V_OD_Env_, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0 );
if ( (V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO) )
{
LOG4CPLUS_ERROR(gLogger, __FUNCTION__ << " Error SetEnv");
SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env_);
return false;
}

long V_OD_erg = 0;
SQLCHAR V_OD_stat[64]= {0}; // Status SQL 执行sql语句的结果状态
SQLSMALLINT V_OD_mlen = 0; // 错误返回的消息文本大小
SQLCHAR V_OD_msg[256] = {0};// 错误消息缓冲区

// allocate connection handle, set timeout
V_OD_erg = SQLAllocHandle( SQL_HANDLE_DBC, V_OD_Env_, &V_OD_hdbc_ );
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
{
LOG4CPLUS_ERROR(gLogger, __FUNCTION__ << " Error AllocDBC " << V_OD_erg);
return false;
}

//(SQLPOINTER *)
V_OD_erg = SQLSetConnectAttr(V_OD_hdbc_, SQL_LOGIN_TIMEOUT, (SQLPOINTER)5, 0);
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
{
LOG4CPLUS_ERROR(gLogger, __FUNCTION__ << " Error SQLSetConnectAttr " << V_OD_erg);
SQLFreeHandle( SQL_HANDLE_DBC, V_OD_hdbc_ );
return false;
}


char szConnStrIn[256] = {0};
char szConnStrOut[256]= {0};
SQLSMALLINT cbConnStrOut = 0;

strcpy(szConnStrIn, "DRIVER=DM ODBC DRIVER");
SQLRETURN sret = SQLBrowseConnect(V_OD_hdbc_, (SQLCHAR*)szConnStrIn, SQL_NTS, (SQLCHAR*)szConnStrOut, 256, &cbConnStrOut);
if (sret != SQL_NEED_DATA) {
LOG_ERROR("SQL_NEED_DATA failed! 111");
exit(0);
}
strcpy(szConnStrIn, "SERVER=192.168.16.172;TCP_PORT=5236");//TCP_PORT=5236 可选
sret = SQLBrowseConnect(V_OD_hdbc_, (SQLCHAR*)szConnStrIn, SQL_NTS, (SQLCHAR*)szConnStrOut, 256, &cbConnStrOut);
if (sret != SQL_NEED_DATA) {
LOG_ERROR("SQL_NEED_DATA failed! 222");
exit(0);
}
strcpy(szConnStrIn, "UID=SYSDBA;PWD=linkdood@300352;");
sret = SQLBrowseConnect(V_OD_hdbc_, (SQLCHAR*)szConnStrIn, SQL_NTS, (SQLCHAR*)szConnStrOut, 256, &cbConnStrOut);
if (sret != SQL_SUCCESS) {
LOG_ERROR("SQLBrowseConnect failed! 333");
exit(0);
}
LOG_INFO("open dm ok");

总是连接 失败,能否指点下;
zjhss1981 2019-12-20
  • 打赏
  • 举报
回复
已经搞定, 通过ODBC可以连接。 WIN7, WIN10,得32位,64位操作系统都可以了。

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧