VC中用ODBC API连到sybase的问题

Thread 2000-09-01 11:21:00
目的:调用sybase的存储过程:
SQLAllocEnv成功!
SQLAllocConnect成功!
但是到了SQLConnect就不动了(以为是超时,但等了一个中午都没反应)。开始怀疑是数据源没有配好,但是用VC起一个database工程后连到此数据源是可以的,用BDE也可以连。另外,sybase我不熟,是不是有其他问题?
付代码,请高手指点:
RETCODE rc = SQLAllocEnv(&henv);
...
SQLAllocConnect(henv,&hdbc);
...
RETCODE ret=SQLConnect(hdbc,(unsigned char *)base,SQL_NTS,(unsigned char *)user,SQL_NTS,(unsigned char *)pass,SQL_NTS);
以上代码连SQLSERVER没有问题!
...全文
165 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Thread 2000-09-06
  • 打赏
  • 举报
回复
问题解决。是因为我在DLL初始化时调SQLConnect就是不行,我也不知道为什么,必须把这部分代码移出来(只有sybase是这样)。
iforever 2000-09-04
  • 打赏
  • 举报
回复
这段代码看不出什么问题.

我的代码和你好象没什么不同.
不过你还是可以看看, 或许能有启发.

代码段1:
CLogonDlg dlgLogon;
if (dlgLogon.DoModal() == IDOK)
{
CWaitCursor wcWaitCur;

if (!ConnectDb((char*)(LPCTSTR(dlgLogon.m_Db)),
(char*)(LPCTSTR(dlgLogon.m_Usr)),
(char*)(LPCTSTR(dlgLogon.m_Pwd))))
{
AfxMessageBox("连接数据库失败");
return FALSE;
}
SQLAllocStmt(m_hDbc, &m_hStmt);
}
else
return FALSE;

代码段2:
bool CResExplrApp::ConnectDb(char* szDbSource, char* szUsrName, char* szPwd)
{
SQLAllocEnv(&m_hEnv);
RETCODE rCode;
rCode = SQLAllocEnv(&m_hEnv); ///* Environment handle
if (rCode == SQL_SUCCESS)
{
rCode = SQLAllocConnect(m_hEnv, &m_hDbc); // /* Connection handle
if (rCode == SQL_SUCCESS)
{
rCode = SQLConnect(m_hDbc, (unsigned char *)szDbSource, SQL_NTS,
(unsigned char *)szUsrName, SQL_NTS, (unsigned char *)szPwd, SQL_NTS);
if (rCode == SQL_SUCCESS || rCode == SQL_SUCCESS_WITH_INFO)
return true;
}
}
return false;
}

Thread 2000-09-04
  • 打赏
  • 举报
回复
retcode = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode = SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void *)SQL_OV_ODBC3,0);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode = SQLSetConnectAttr(hdbc,SQL_LOGIN_TIMEOUT,(void*)1,0);
retcode = SQLConnect(hdbc,(SQLCHAR*)"test",SQL_NTS,
(SQLCHAR*)"sa",SQL_NTS,(SQLCHAR*)"",SQL_NTS);//在这里停住不动
}
}
}
以上代码,连SQLSERVER没有问题,拷到控制台程序里也没有问题。
请大虾们捧场!!!
Thread 2000-09-04
  • 打赏
  • 举报
回复
怎么还没有人帮我呀!!!急!
驱动程序应该是没有问题。另外,我发现在控制台程序里可以成功,但一到DLL里就不行了。
iforever 2000-09-01
  • 打赏
  • 举报
回复
ODBC 驱动程序版本对吗,
仔细看看你的机器上有几个SYBASE的ODBC驱动程序.
Thread 2000-09-01
  • 打赏
  • 举报
回复
还有,我的OICQ:58900
Thread 2000-09-01
  • 打赏
  • 举报
回复
驱动程序是:Sybase System 11,版本号3.01.00.00,SYSYBNT.DLL,1997-8-12

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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