这篇文章主要是连着上面的文章,连接过后的查询。
第一步:还是建立一个基本对话框,如下图:
因为我访问的数据库,包括六个字段,分别是UserID、UserName。。。等,这个控件主要是通过listctrl来完成的。包括显示数据,这个控件很强大,还可以显示图片,以后再探讨。
listtrl初始化代码如下:
m_ListCtrl.InsertColumn(0,
_T("UserID"), LVCFMT_LEFT,60,-1);
m_ListCtrl.InsertColumn(1, _T("UserName"),
LVCFMT_LEFT,100,-1);
m_ListCtrl.InsertColumn(2, _T("FirstName"),
LVCFMT_LEFT,100,-1);
m_ListCtrl.InsertColumn(3, _T("LastName"),
LVCFMT_LEFT,100,-1);
m_ListCtrl.InsertColumn(4, _T("EmailAddress"),
LVCFMT_LEFT,100,-1);
m_ListCtrl.InsertColumn(5, _T("CellPhone"),
LVCFMT_LEFT,100,-1);
InsertColumn的作用是添加一列,列宽为60,左对齐。列名字也就是显示的字段名,这里分别是六个字段。
第二步:查询代码如下:
这里主要使用的记录集指针
_RecordsetPtr
m_pRecordSet;//先实例化一个m_pRecordSet指针
m_pRecordSet.CreateInstance(__uuidof(Recordset));//创建对象
m_pRecordSet =
m_pConnection->Execute("select * from
UserProfile",NULL,adCmdText);
此处是vc++调用了sql语句,select * from
UserProfile,*代表所有数据,UserProfile即表名。
while(!m_pRecordSet->rsEOF)
{
int nIndex =
m_ListCtrl.InsertItem(m_ListCtrl.GetItemCount(), (_bstr_t)2);
此处要感谢我的师父(六大灵童(王老师))的指点,建立一个索引,才能把数据显示全,(_bstr_t)2这个可以取其他值不影响。
m_ListCtrl.SetItemText(nIndex, 0,
(_bstr_t)m_pRecordSet->GetCollect("UserID"));
m_ListCtrl.SetItemText(nIndex,
1, (_bstr_t)m_pRecordSet->GetCollect("UserName"));
m_ListCtrl.SetItemText(nIndex,
2, (_bstr_t)m_pRecordSet->GetCollect("FirstName"));
m_ListCtrl.SetItemText(nIndex,
3, (_bstr_t)m_pRecordSet->GetCollect("LastName"));
m_ListCtrl.SetItemText(nIndex,
4, (_bstr_t)m_pRecordSet->GetCollect("EmailAddress"));
m_ListCtrl.SetItemText(nIndex,
5, (_bstr_t)m_pRecordSet->GetCollect("CellPhone"));
m_pRecordSet->MoveNext();//游标下移一个
}
第三步:清空数据
m_ListCtrl.DeleteAllItems(); //删除内容 这句话可以只删除内容不删除表头 多好的语句啊
别忘了在listctrl属性里面设置向上或者向下显示
最终的结果图: