ListCtr列表控件显示有关问题,多出好多列

ListCtr列表控件显示问题,多出好多列
连Oracle后自动读取表名在List列表框中显示,双击列表框中的表名后在列表控件中显示全部表信息,编译运行通过,只是列表控件中多显示出好列,都是重复的最后一列。

双击代码如下:
C/C++ code
void CSiDView::OnDblclkList1() 
{
    // TODO: Add your control notification handler code here
    UpdateData(TRUE);

    m_grid.DeleteAllItems();

    CHeaderCtrl* pHeaderCtrl = m_grid.GetHeaderCtrl();
    if (pHeaderCtrl != NULL)
    {
        int  nColumnCount = pHeaderCtrl->GetItemCount();
        for(int i =0; i < nColumnCount; i++)
            m_grid.DeleteColumn(0) ;
    }
    CString  str,sql;
    
    m_list.GetText(m_list.GetCurSel(),str);
    sql.Format("select * from %s",str);
    pRst.CreateInstance(__uuidof(Recordset));
    //pRst->Open((_bstr_t)sql,pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
    pRst->Open((_bstr_t)sql,pConn.GetInterfacePtr(), adOpenStatic , adLockReadOnly, adCmdText);
    
    Fields * fields=NULL;
    long countl;
    BSTR bstr;
    
    
    pRst->get_Fields((&fields));
    countl=fields->Count;
    
    for(long i=0;i<countl;i++)
    {
        fields->Item[i]->get_Name(&bstr);
        m_grid.InsertColumn(i,(CString)bstr,LVCFMT_LEFT,100,0);
    }
    int k;
    _variant_t var;
    tagVARIANT varFieldVal;
    var.vt = VT_I2;
    FieldPtr pField;
    while(!pRst->adoEOF)
    {
        m_grid.InsertItem(0, "");
        for(k=0;k<countl;k++)
        {
            var.iVal = k;
            pField = pRst->Fields->GetItem(var);
            pField->get_Value(&varFieldVal);
            if(varFieldVal.vt != VT_NULL)
                m_grid.SetItemText(0,k,(char*)(_bstr_t)varFieldVal);
            m_grid.InsertColumn(i,(CString)bstr,LVCFMT_LEFT,100,0);
        }
        pRst->MoveNext();
    }


------解决方案--------------------
while
for
InsertColumn


这样已经执行了很多次的添加列
------解决方案--------------------
代码
while(!pRst->adoEOF)
{
m_grid.InsertItem(0, "");
for(k=0;k<countl;k++)
{
var.iVal = k;
pField = pRst->Fields->GetItem(var);
pField->get_Value(&varFieldVal);
if(varFieldVal.vt != VT_NULL)
m_grid.SetItemText(0,k,(char*)(_bstr_t)varFieldVal);
m_grid.InsertColumn(i,(CString)bstr,LVCFMT_LEFT,100,0);
}
pRst->MoveNext();
}
里的m_grid.InsertColumn(i,(CString)bstr,LVCFMT_LEFT,100,0);不用要了吧。