VC 视图列表控件(CListCtrl)无法获取修改数据,该怎么处理

VC 视图列表控件(CListCtrl)无法获取修改数据
我根据书上的实例写了一个视图列表框的例子,可是得到不到书上所说的效果,代码如下:
 //注:CListCtrl视图列表框中的数据来自于ACCESS数据库
int pos=m_List.GetSelectionMark();   //获得选中行
CString Description,Switch,Root,Child,Item,Type,Data;
Description=m_List.GetItemText(pos,0); //获得选中行第一列数据
Switch=m_List.GetItemText(pos,1);      //获得选中行第二列数据
Root=m_List.GetItemText(pos,2);       //获得选中行第三列数据
Child=m_List.GetItemText(pos,3);       //..............
Item=m_List.GetItemText(pos,4);       //.............
Type=m_List.GetItemText(pos,5);     //.........
Data=m_List.GetItemText(pos,6);      //..............
if(Switch==_T("允许"))
{
Switch=_T("禁止");
}
else
{
Switch=_T("允许");
}
ADO ADpo;
ADpo.ConnectionTata();   //连数据库
CString SQL="select * from Registry";
ADpo.m_pRecordset=ADpo.OpenRecordset(SQL);  //打开查询
try
{
ADpo.m_pRecordset->Move((long)pos,vtMissing);  //指针跳到选中项
ADpo.m_pRecordset->PutCollect("描述",(_bstr_t)Description);
ADpo.m_pRecordset->PutCollect("开关",(_bstr_t)Switch);
ADpo.m_pRecordset->PutCollect("根键",(_bstr_t)Root);
ADpo.m_pRecordset->PutCollect("子键",(_bstr_t)Child);
ADpo.m_pRecordset->PutCollect("项名",(_bstr_t)Item);
ADpo.m_pRecordset->PutCollect("类型",(_bstr_t)Type);
ADpo.m_pRecordset->PutCollect("数据",(_bstr_t)Data);
ADpo.m_pRecordset->Update();
MessageBox("YES!");
}
catch(...)
{
MessageBox("NO!");
}
ADpo.CloseConnection();
ADpo.CloseRecordset();

就是想获得数据所判断第二列的数据是“禁止”还是“允许”并赋值更新数据库,如果只有一行数据可以得到数据并修改数据的效果,可是有三个的时候只有第二行的数据能够修改,再多几行数据更是出现几种不同的问题!请教哪里出错并修改,谢谢!!
------解决方案--------------------
数据库中你要设置主键,通过主键来定位和修改记录。
------解决方案--------------------
GetSelectionMark是获取选择的行 如果你的list支持多选
用下面方法处理所有选择了的行
POSITION pos = m_myListCtrl.GetFirstSelectedItemPosition();
  if (pos == NULL)
  {
     TRACE(_T("No items were selected!\n"));
  }
  else
  {
     while (pos)
     {
        int nItem = m_myListCtrl.GetNextSelectedItem(pos);
        //nItem列选择了  进行处理...
     }
  }
如果你是要遍历所有行
int count = m_myListCtrl.GetItemCount();
for (int i = 0; i < count; ++i)
{
    //处理i行数据...
}
------解决方案--------------------

POSITION pss = m_listctrl.GetFirstSelectedItemPosition();
if (pss != NULL)
{
int _nRow = int (pss);
str = m_listctrl.GetItemText(_nRow-1,0));

}