菜鸟学习数据库编程问题之-001

wfowler 2004-05-03 12:39:45
在DAO中,如何将COleVariant转变成CString ??
...全文
39 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wfowler 2004-05-06
  • 打赏
  • 举报
回复
‘VC数据库编程’中,关于DAO编程一节中:

//
编写“物品管理>查看”菜单命令的响应函数OnStuffView()。
OnStuffView()函数从“物品”表里读取物品数据,将这些数据显示在视图里。函数的代码如下:
void CDAODemoView::OnStuffView()
{
// 设置当前操作的数据库表名称
m_strTableName = _T("物品");
// 监测DAO数据库对象的有效性,并在记录集对象打开时关闭该记录集
if(!m_pDatabase->IsOpen()) return;
if(!m_pRecordset) return;
if(m_pRecordset->IsOpen()) m_pRecordset->Close();
// 清除所有视图上的显示
CListCtrl& ctlList = (CListCtrl&)GetListCtrl();
EraseList();
// 取表的结构信息
CDaoFieldInfo fieldInfo;
int nFields;
CDaoTableDef td(m_pDatabase);
try
{
td.Open(m_strTableName);
nFields = td.GetFieldCount();
for (int j=0; j < nFields; j++){
td.GetFieldInfo(j,fieldInfo);
int nWidth = ctlList.GetStringWidth(fieldInfo.m_strName) + 15;
ctlList.InsertColumn(j,fieldInfo.m_strName,
LVCFMT_LEFT, nWidth);
}
}
catch (CDaoException* e)
{
e->ReportError();
e->Delete();
return;
}
td.Close();
// 取表的数据
int nItem = 0;
try
{
CString strSelect(_T("Select * From ["));
strSelect += m_strTableName;
strSelect += _T("]");
m_pRecordset->Open(dbOpenDynaset,strSelect);
while (!m_pRecordset->IsEOF()) {
COleVariant var;
var = m_pRecordset->GetFieldValue(0);
ctlList.InsertItem(nItem,CCrack::strVARIANT(var));
for (int i=0; i < nFields; i++){
var = m_pRecordset->GetFieldValue(i);
ctlList.SetItemText( nItem,i,CCrack::strVARIANT(var));
}
nItem++;
m_pRecordset->MoveNext();
}
}
catch (CDaoException* e)
{
e->ReportError();
e->Delete();
return;
}
// 显示信息
CString strRecCount;
strRecCount.Format(_T("显示了%d条记录。"),nItem);
UpdateWindow();
if (nItem>=MAXRECORDS) MessageBox(strRecCount);
((CFrameWnd *) AfxGetMainWnd())->SetMessageText(strRecCount);
}


1,其中var = m_pRecordset->GetFieldValue(0);设为‘0’程序异常,‘1’则OK;同样在 for (int i=0; i < nFields; i++)循环中,i也不可为‘0’。这是为什么呢?
2,EraseList();CCrack::strVARIANT(var),这二个是笔误吗,VC中没有这样的函数呀。
3,使用了二楼的转换后,出来的是乱码。


请高手给指点一下,并交个朋友,非常感谢!!!!!!!!!!!!
Kudeet 2004-05-03
  • 打赏
  • 举报
回复
COleVariant v3 = "字符串";
CString str =(BSTR)v3.pbstrVal;

4,018

社区成员

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

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