关于SqlBindCol的

timepalette 2003-08-24 09:52:27
DWORD dwtotal;
TCHAR szSql[] = _T("select count(*) from simple_dict");
nRet = ::SQLExecDirect(rs.m_hstmt, (SQLTCHAR *)szSql, SQL_NTS);
if (nRet == SQL_SUCCESS)
{
nRet = ::SQLBindCol(m_rsWord.m_hstmt, 0, SQL_C_ULONG, &dwTotal, 0, &cb);
nRet = ::SQLFetch(m_rsWord.m_hstmt);
}

不行啊.到SQLFetch, nRet就是 -1 , dwTotal里什么也存不上

我不知道select count(*) from...这样的返回列该用什么类型绑定?????
其实有很多情况都比较奇怪,举例来说,在sql里定义的 NUMBER(3) NOT NULL, 必须绑定成SQL_C_CHAR, 我都郁闷了......
...全文
108 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
timepalette 2003-08-26
  • 打赏
  • 举报
回复
改成1也不行,今天在网上看到了一个最好的方法:
CString strSql = _T("select count(word) from dict where ");
strSql += szNewFilter;
CString strTotal;
DWORD dwTotal;

CDatabase db;
db.OpenEx("DSN=timepp_dict");
CRecordset rs(&db);
rs.Open(AFX_DB_USE_DEFAULT_TYPE, strSql);
rs.GetFieldValue((short)0, strTotal);
rs.Close();

m_dwWordTotal = atol(strTotal);
一切OK,再次谢谢大家.
timepalette 2003-08-25
  • 打赏
  • 举报
回复
up
timepalette 2003-08-25
  • 打赏
  • 举报
回复
UP,改正一下源代码
DWORD dwtotal;
TCHAR szSql[] = _T("select count(*) from simple_dict");
nRet = ::SQLExecDirect(rs.m_hstmt, (SQLTCHAR *)szSql, SQL_NTS);
if (nRet == SQL_SUCCESS)
{
nRet = ::SQLBindCol(rs.m_hstmt, 0, SQL_C_ULONG, &dwTotal, 0, &cb);
nRet = ::SQLFetch(rs.m_hstmt);
}
yanzai8848 2003-08-25
  • 打赏
  • 举报
回复
nRet = ::SQLBindCol(rs.m_hstmt, 1, SQL_C_ULONG, &dwTotal, 0, &cb);
test7979 2003-08-25
  • 打赏
  • 举报
回复
0是书签列.
test7979 2003-08-25
  • 打赏
  • 举报
回复
列号是从1开始的吧
coogool 2003-08-25
  • 打赏
  • 举报
回复
select count(*) from simple_dict语句语法好象不正确,可查一下数据库
方面的书,我有好长时间没搞数据库了,以前遇到过类似问题,记得是
用表的别名解决的。你自己查以下。

4,011

社区成员

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

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