难道这里没有会用oledb的高手吗? 我以前也在这儿问过这个问题,没有结果后来改用ADO了 :) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 假如要用ado的话,那这个程序就要大改了,各位帮帮忙,应该很简单的吧 也许是这一条语句有问题:pColumnInfo[2].ulColumnSize=1024数据库字段的长度应该不可能答到1024这末长,常见的数据库字段最大长度为250。绝大多数字段的长度应该在100以下。若超过200,应该用text或image字段。你先看看数据库表的结构,看该字段的长度为多少。若长度为40,则应该是:pColumnInfo[2].ulColumnSize=41. 改成如下形式好了。不过nColumnNum必须是你执行SQL语句szSQL后返回值的列数。例如对于“select IDNo,Name from t_TestTbl”,nColumnNum必须等于2。另Session是一个CSession,建立数据库连接时可获得。#define FIELD_BUF_LEN 1024struct 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); } } } LoadPicture未定义咋回事 怎样实现拖动动态创建的static控件??? 急!!对话框中RichEdit控件的问题 dialog中的CSplitterWindow,他的左右2边有控件,如果调整Splitter,如果做到控件自动调整? 怎样设置套接字的接收数据的超时时间? 问一个Socket非阻塞问题 急!!!ADO中如何打开dbf文件 高分求救 急寻解决办法 请教:如何得到wav文件总的播放时间? 在MFC中如何得到当前系统安装的TRUETYPE字体 如何察看系统的error log?运行程序出错,提示生成一个error log,却怎么也找不到!
数据库字段的长度应该不可能答到1024这末长,常见的数据库字段最大长度为250。绝大多数字段的长度应该在100以下。若超过200,应该用text或image字段。你先看看数据库表的结构,看该字段的长度为多少。若长度为40,则应该是:pColumnInfo[2].ulColumnSize=41.
另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);
}
}
}