我用vc设计的界面,要求把文本框和下拉列表框中的数据添加到数据库中,同时要显示到界面上的List控件中,SQL Server数据库中有10个字段都是nvarchar类型的,我用的是ODBC方式连接数据库,其中InitCtrData函数负责从数据库中读取数据并显示到列表框控件中,InsertDetailInfiItem函数负责把数据插入到列表框控件中。
但我在运行是提示“无效的描述符索引”,数据没有显示到列表框中,大家帮我分析一下代码啊,谢谢了,不够分的我再开!
代码如下:
void CAddTesterDlg::InitCtrData()
{
UpdateData();
if(!m_database.IsOpen())
{
if(!m_database.Open(_T("bmxt")))
{
MessageBox("没有连接数据库!","添加考生");
return;
}
}
m_listDetail.DeleteAllItems();
CAddTesterSet *m_pset=new CAddTesterSet(&m_database);
CString strSQL;
strSQL.Format("select * from tester_info_tab");
m_pset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
//处理表格
while(!m_pset->IsEOF())
{
CString id;
CString name,sex,type,number;
CString idname,idno,grade,profession,campus;
m_pset->GetFieldValue((short)0,id);
m_pset->GetFieldValue(1,name);
m_pset->GetFieldValue(2,sex);
m_pset->GetFieldValue(3,type);
m_pset->GetFieldValue(4,number);
m_pset->GetFieldValue(5,idname);
m_pset->GetFieldValue(6,idno);
m_pset->GetFieldValue(7,grade);
m_pset->GetFieldValue(8,profession);
m_pset->GetFieldValue(9,campus);
InsertDetailInfoIte(id,name,sex,type,number,idname,idno,grade,profession,campus);
m_pset->MoveNext();
}
m_pset->Close();
m_database.Close();
UpdateData(FALSE);
}
///////////////////////////////////////
void CAddTesterDlg::InsertDetailInfoItem(CString id,CString name,CString sex,CString type,CString number,CString idname,CString idno,CString grade,CString profession,CString campus)
{
//获取当前的纪录条数.
int nIndex = m_listDetail.GetItemCount();
LV_ITEM lvItem;
lvItem.mask = LVIF_TEXT ;
lvItem.iItem = nIndex;//行数
lvItem.iSubItem = 0;
lvItem.pszText = (char*)(LPCTSTR)id;//第一列
//在最后一行插入记录值.
m_listDetail.InsertItem(&lvItem);
//设置该行的其他列的值.
m_listDetail.SetItemText(nIndex,1,name);
m_listDetail.SetItemText(nIndex,2,sex);
m_listDetail.SetItemText(nIndex,3,type);
m_listDetail.SetItemText(nIndex,4,number);
m_listDetail.SetItemText(nIndex,5,idname);
m_listDetail.SetItemText(nIndex,6,idno);
m_listDetail.SetItemText(nIndex,7,grade);
m_listDetail.SetItemText(nIndex,8,profession);
m_listDetail.SetItemText(nIndex,9,campus);
}
数据库中的字段是id,name,sex,type,number,idname,idno,grade,profession,campus,image,最后一个字段存的是图片(image类型),我只想把前面10个字段显示出来,在界面上可以把数据插到列表框,就是初始化进入界面时数据库中所以的数据不能显示在列表框控件中,这样查询也提示“无效的描述符索引”,是不是设置索引开头有问题?