关于ado和CListctrl结合的有关问题,郁闷一天了

关于ado和CListctrl结合的问题,郁闷一天了~

发现总是有问题!
我尽量把我的情况下的详细点,,

如果只是   int   kk;   kk=0;
再CListctrl的   lvi.pzItem= "hello ";   lvi.iItem=kk;     kk++;   SetItemText(kk..
发现一切正常
各列正常显示数据库里的数据

但若从   ACCESS数据库里读出   id列(主键,自动编号)
int   kk;   kk=0;     kk=atoi(....)
再CListctrl的   lvi.pzItem= "hello "   ;   lvi.iItem=kk;   SetItemText(kk   ..
[   我想用这个ID,在单机的时候GetItem,获得这个   iTtem
然后再工具这个iTtem   查询数据库   ]

发现显示N列   hello,其他列的数据没有显示出来,,
没报错!
希望大哥们救救我,我郁闷一天了!!
下面是部分代码,,乱,,,!

CString   strid,strip,strname,strress,strtime;
int   kk;
kk=0;
variant_t   var;
LV_ITEM   lvi;
lvi.mask=LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM;  

while(!m_pRecordset-> adoEOF)
{
var=m_pRecordset-> GetCollect( "id ");
strid=(LPCSTR)_bstr_t(var);     //id肯定是非空
//kk=atoi(strid);
var   =   m_pRecordset-> GetCollect( "ip ");
strip=(LPCSTR)_bstr_t(var);   //IP肯定是非空的

var   =   m_pRecordset-> GetCollect( "sitename ");
if(var.vt   !=   VT_NULL)   strname=(LPCSTR)_bstr_t(var);
else   strname= " ";

var   =   m_pRecordset-> GetCollect( "address ");
if(var.vt   !=   VT_NULL)   strress=(LPCSTR)_bstr_t(var);
else   strress= " ";

var   =   m_pRecordset-> GetCollect( "addtime ");
if(var.vt   !=   VT_NULL)   strtime=(LPCSTR)_bstr_t(var);
else   strtime= " ";

lvi.iImage   =   0;
lvi.iItem=kk;   //想设置该值与数据库里的id值一样
lvi.iSubItem=0;  
lvi.pszText= "hello ";  
m_listctrl.InsertItem(&lvi);

m_listctrl.SetItemText(kk,0,strip);  
m_listctrl.SetItemText(kk,1,strname);
m_listctrl.SetItemText(kk,2,strress);
m_listctrl.SetItemText(kk,3,strtime);

if(kk> 3)
m_listctrl.SetItemText(kk,3, "kkkkk ");

kk++;

m_pRecordset-> MoveNext();
}

------解决方案--------------------
给你个例子
=====================================================================
CString Conn= "provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\TestDocuments\\Source\\Info\\CameraInfomation.mdb ";
myado.ConnecDataLibrary(Conn, " ", " ");
myado.OpenSheet( "select * from AlarmInfo ");

_variant_t var;
CString str_AlarmTime, str_CamNum, str_CamPosition;
CString str_StationTel, str_DisposalOrNot, str_DisposalRecord;
str_AlarmTime = str_CamNum = str_CamPosition = " ";
str_StationTel = str_DisposalOrNot = str_DisposalRecord = " ";

// query the related data and add it to the list control
try{
if( !myado.GetRecoPtr() -> BOF )
myado.GetRecoPtr() -> MoveFirst();
else{
AfxMessageBox( "NO data in database! ");
return;
}

int ii=-1;
// Read data from Access and add it to the list control
while( !myado.GetRecoPtr() -> adoEOF ){
LV_ITEM lvitem;
lvitem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;
lvitem.state = 0;
lvitem.stateMask = 0;
char temp[800];

lvitem.iItem = ++ ii;
lvitem.iSubItem = 0;
lvitem.pszText = itoa(ii, temp, 32);