难道这里没有会用oledb的高手吗?

xyzoem 2002-01-08 08:29:16
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我一窍不通,希望高手指点。答出来的另有100分奉送,请到这里签到。
http://www.csdn.net/expert/topic/461/461405.shtm
...全文
89 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamshuke 2002-02-23
  • 打赏
  • 举报
回复
改成如下形式好了。不过nColumnNum必须是你执行SQL语句szSQL后返回值的列数。例如对于“select IDNo,Name from t_TestTbl”,nColumnNum必须等于2。
另Session是一个CSession,建立数据库连接时可获得。

#define FIELD_BUF_LEN 1024
struct MYBIND
{
MYBIND()
{
memset(this, 0, sizeof(*this));
}
TCHAR szValue[FIELD_BUF_LEN];
DWORD dwStatus;
};

。。。。。
CCommand<CManualAccessor> rs;
struct MYBIND* pBind = NULL;
pBind = new MYBIND[nColumnNum];
rs.CreateAccessor(nColumnNum, pBind, sizeof(MYBIND) * nColumnNum);
for (int l=0; l<nColumnNum; l++)
{
rs.AddBindEntry(l+1, DBTYPE_STR, sizeof(TCHAR) * FIELD_BUF_LEN, &pBind[l].szValue, NULL, &pBind[l].dwStatus);
}

if (rs.Open(Session, szSQL)) != S_OK)
AfxThrowOLEDBException(rs.m_spCommand, IID_ICommand);

CStringArray Record;
CString str;

while(rs.MoveNext() == S_OK)
{
for (int j=1; j<=nColumnNum; j++)
{
if (pBind[j-1].dwStatus == DBSTATUS_S_ISNULL)
{
Record.Add("");
}
else
{
str = pBind[j-1].szValue;
str.TrimRight();
Record.Add(str);
}
}

}


jvhua007 2002-02-23
  • 打赏
  • 举报
回复
也许是这一条语句有问题:pColumnInfo[2].ulColumnSize=1024
数据库字段的长度应该不可能答到1024这末长,常见的数据库字段最大长度为250。绝大多数字段的长度应该在100以下。若超过200,应该用text或image字段。你先看看数据库表的结构,看该字段的长度为多少。若长度为40,则应该是:pColumnInfo[2].ulColumnSize=41.
xyzoem 2002-01-08
  • 打赏
  • 举报
回复
假如要用ado的话,那这个程序就要大改了,各位帮帮忙,应该很简单的吧
floodzhu 2002-01-08
  • 打赏
  • 举报
回复
我以前也在这儿问过这个问题,没有结果
后来改用ADO了 :)
本书的通用应用程序编程一节将向你展示如何使用MFC AppWizard 创建基本的应用程 序。我们不花许多时间来研究创建特定类型应用程序的细节,但将讲述创建MFC AppWizard 提供的各种类型的应用程序的方法。显然,在本节中我假定读者已经具备了一定的C++编 程经验。当然,我会介绍创建应用程序本身的详细做法,但读者应该知道一些C++的基本 概念,特别是语言元素方面的知识。 数据库编程示例将为已经知道一些数据库基本知识的读者提供丰富的信息。如果你还 不知道什么是表、还没有坚实地掌握关系数据库的理论,那么在阅读本书第二部分之前, 需要花点时间先熟悉一下上述内容。我们将研究使用C++操作数据库的基本技巧,你也将 理解ODBC(Open Database Connectivity,开放数据库互连),OLE-DB(Object Linking and embedding database,对象链接与嵌入数据库),ADO(ActiveX Data Object,ActiveX 数据 对象)以及DAO,(Data Access Object,数据访问对象)之间的差别。我们甚至还各花了 一章的篇幅来讲述ODBC 和ADO 数据库编程。 Internet 编程实际上从本书的第一部分就开始讲述了。这里研究了如何创建基于HTML 的应用程序。第二部分将讨论如何创建跨越Internet 的数据库连接,然而这里我们并没有 考察任何实际的实例代码。第三部分是介绍Internet 的中心章节,我们将以中级程序员的 水平来研究ActiveX 编程。如果你只是个初级程序员,那么会发现某些概念有点难以理解。 然而,某些章节,比如第8 章讲述的HTML 编程,将会为各层次的程序员提供帮助。另外, 第三部分将向读者展示如何使用ActiveX Document(ActiveX 文档),ISAPI Filter(ISAPI 过 滤器),以及ISAPI Extension(ISAPI 扩展)。 在第四部分,我们将讨论从安全性问题到把帮助文件组合在一起的方方面面的内容。 实际上,我们还要探讨Visual C++中使用帮助文件的两种不同技巧:标准的帮助文件和 Microsoft 正在其产品中使用的新型HTML 帮助文件。你还将学习发行应用程序的方法,即 使在企业环境中这也是一项不可或缺的任务。 通过本书,你将会深入理解C 编程语言,虽然它还不至于让你成为一名C 编程高手。 本书中你不会找到很多初级的编程知识,但具备一定C 编程技能的任何人都会理解本书的 内容。积极建议读者已经具备Microsoft Visual C++的一定知识,原因在于所有的示例都以 Visual C++作为基础。即使我们把示例控制在基本编程技巧的范围内,也依然需要编写OCX 或DLL 的知识。如果在你阅读本书之前已经掌握了一些底层编程知识,那么你就会很快地 学会掌握提供的各种信息。再说一句,本书包含了一些“课程复习”风格的示例,但它们 也没有提供很多的初级信息。 当然,上面介绍的仅仅是本书的概貌,在这本书中你会找到能够把Visual C++的功能 发挥得淋漓尽致的各种各样的有用技巧和提示。

16,551

社区成员

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

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

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