void CDlgStudentBasicInfo::OnCmdStuBasicInfoQuery() 
{         
        CreateSQL();/*生成SQL语句的函数*/
MessageBox(strSQL);   /在这儿完全正常,假如SQL语句为select * from VStuBasicInfo
        
         CString temp;         
m_stuQueryList.DeleteAllItems();
CVStuBasicInfo rs(&m_db);
rs.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
if(rs.GetRecordCount()==0)
{
MessageBox("对不起,没有你要找的记录!");
return;
}
else
{
rs.MoveFirst();
}
int i=0;
while(!rs.IsEOF()) //在列表框中显示查询结果
{
m_stuQueryList.InsertItem(i,"");
temp.Format("%s",rs.m_Stu_NO);
m_stuQueryList.SetItemText(i,0,temp);
m_stuQueryList.SetItemText(i,1,rs.m_Name);
m_stuQueryList.SetItemText(i,2,rs.m_BirthDay.Format("%Y-%m-%d"));
m_stuQueryList.SetItemText(i,3,rs.m_Sex);
m_stuQueryList.SetItemText(i,4,rs.m_Stu_Type_Name);
m_stuQueryList.SetItemText(i,5,rs.m_Folk_Name);
m_stuQueryList.SetItemText(i,6,rs.m_Polity_Visage_Name);
m_stuQueryList.SetItemText(i,7,rs.m_Specility_Name);
m_stuQueryList.SetItemText(i,8,rs.m_Class_Name);
m_stuQueryList.SetItemText(i,9,rs.m_Country_Exam_NO);
m_stuQueryList.SetItemText(i,10,rs.m_Persin_NO);
m_stuQueryList.SetItemText(i,11,rs.m_Native_Place);
m_stuQueryList.SetItemText(i,12,rs.m_Married);
m_stuQueryList.SetItemText(i,13,rs.m_Dormitory);
m_stuQueryList.SetItemText(i,14,rs.m_Dormitor_Tel);
m_stuQueryList.SetItemText(i,15,rs.m_Dwelling_Place);
m_stuQueryList.SetItemText(i,16,rs.m_Home_Tel);
m_stuQueryList.SetItemText(i,17,rs.m_Addition);

rs.MoveNext();
i++;
}
}
这段程序编译没有任何的问题,但是运行时出现“内存不足”的问题。不知道为什么?请大人们执教。

解决方案 »

  1.   

    数据库有多少记录?
    m_stuQueryList.SetReraw(FALSE);
    ...
    m_stuQueryList.SetReraw(TRUE);
      

  2.   


    后面应该rs.Close()
    这段代码没什么其他问题啊
      

  3.   

    大家再努力一把啊。我再试了一下,问题好像出再这儿:rs.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);有了这一句就会出现“内存不足”的问题,但是现在我要打开这个记录集,请问该怎么做呢?
      

  4.   

    用这个试试
    rs->Open("select * from VStuBasicInfo",conn.GetInterfacePt(),adOpenDynamic,adLockOptimistic,adCmdText);
      

  5.   

    你用的是CRecordset还是CDaoRecordset??
    你看你的database对象m_db有没有问题,
    在Recordset,DaoRecordset和ADO的_RecordsetPtr中
    数据源的连接都是异步的,
    不过肯定不是内存不足的问题,
    在win32模式中没有内存不足,
    只会速度让你慢的像死机,
    我试过无论我分配多大内存系统都能分配,
    不过后来就是硬盘灯在不停的闪了