一个关于oledb的问题

xyzoem 2002-01-12 01:31:34
CCommand<CDynamicAccessor > command;
DBCOLUMNINFO* pColumnInfo;
pColumnInfo[2].wType=DBTYPE_STR;
pColumnInfo[2].ulColumnSize=1024;//对应数据库的字段为ntext,问题出在这里
command.AddBindEntry(pColumnInfo[2]);
command.Bind();
char *pContent=NULL;
pContent=(char*)command.GetValue(ULONG(3));
这段代码只能让数据库中的内容显示前一部分,要让它全部显示出来,请问这段代码该怎么改。因为是改别人的代码,所以无法大改,oledb我一窍不通,希望高手指点。up有分,答出来我另开帖子给300分。
...全文
61 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hujun614 2002-01-12
  • 打赏
  • 举报
回复
你给的代码太不全了!以下内容,能不能帮你,也不知道了,要是你有兴趣,可以将(可以精简,但与OLEDB相关的这段要有)代码发给我,我帮你调试好了,我的QQ:12953091.

如果使用CManualAccessor,在使用之前与相应列进行绑定。要绑定列,可以用函数GetColumnInfo,如下所示:

// Get the column information
ULONG ulColumns = 0;
DBCOLUMNINFO* pColumnInfo = NULL;
LPOLESTR pStrings = NULL;
if (rs.GetColumnInfo(&ulColumns, &pColumnInfo, &pStrings) != S_OK)
AfxThrowOLEDBException(rs.m_pRowset, IID_IColumnsInfo);
struct MYBIND* pBind = new MYBIND[ulColumns];
rs.CreateAccessor(ulColumns, &pBind[0], sizeof(MYBIND)*ulColumns);
for (ULONG l=0; l<ulColumns; l++)
rs.AddBindEntry(l+1, DBTYPE_STR, sizeof(TCHAR)*40, &pBind[l].szValue, NULL, &pBind[l].dwStatus);
rs.Bind();


用while循环来取数据。在循环中,调用MoveNext来测试光标的返回值是否为S_OK,如下所示:
while (rs.MoveNext() == S_OK)
{
// Add code to fetch data here
// If you are not using an auto accessor, call rs.GetData()
}



hujun614 2002-01-12
  • 打赏
  • 举报
回复
呵呵,有300分呀,你等等,我一定想办法搞出来。

16,551

社区成员

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

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

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