怎么显示数据表的内容在一个list ctrl中

如何显示数据表的内容在一个list ctrl中
void   CEstimateDlg::OnShow()
{
        if(m_pSet.IsOpen())
        {
m_pSet.Close();
        }
          CString       str=dlg.strList;      
          CString       s;    
          s.Format( "select   *   from   %s ",str);
          m_pSet.Open(dbOpenSnapshot,s,0);     //     ?问题可能出现在这一行,但不知道如何改
          m_pSet.MoveFirst();

          this-> count   =   0;
          CString     cs;
          m_list.DeleteAllItems();
          while   (!m_pSet.IsEOF())
{
cs.Format( "%d ",m_pSet.m_ID);
m_list.InsertItem(count,cs,0);
                  m_list.SetItemText(count,0,cs);

                  cs.Format( "%d ",m_pSet.m_column1);  
m_list.SetItemText(count,1,cs);

                  cs.Format( "%.9f ",(double)m_pSet.m_column2);  
                  m_list.SetItemText(count,2,cs);

                  m_pSet.MoveNext();
count++;
}

}
m_pSet是我定义的继承自cdaorecordset的类csysdaorecordset的对象,函数onshow()想实现在一个对话框dlg中选择数据表的名称(数据表名用cstring   strlist来保存),然后在一个list   ctrl中将数据表的数据显示出来,高手帮我看一下这段程序怎么了?

------解决方案--------------------
查了一下msdn
,对于
CDaoRecordset::Open

这个函数来说,好像第一个参数应该是int nOpenType = AFX_DAO_USE_DEFAULT_TYPE

virtual void Open( int nOpenType = AFX_DAO_USE_DEFAULT_TYPE, LPCTSTR lpszSQL = NULL, int nOptions = 0 );

dbOpenSnapshot 是什么

try
{
m_pSet.Open(dbOpenSnapshot,s,0);

}
catch( CDaoException* e )
{
AfxMessageBox(
e-> m_pErrorInfo-> m_strDescription,
MB_ICONEXCLAMATION );
// Delete the incomplete recordset object
delete m_pSet;
m_pSet = NULL;
e-> Delete();
}



------解决方案--------------------
m_pRecordset-> Open(_variant_t(bstrQuery),vNull,adOpenDynamic,adLockOptimistic,adCmdText);

打开数据库,我用的是这条。参数我也不是很明白,但确实可以用。

m_pRecordset 是_RecordsetPTR指针

对了,我用的是ADO技术。
------解决方案--------------------
既然你用ADO,怎么还说

“m_pSet是我定义的继承自cdaorecordset的类csysdaorecordset的对象”

我晕了

关于ADO,
看这个

http://blog.****.net/handsomerun/archive/2006/08/12/1055311.aspx