小弟我在MFC中定义了个数组,然后把数据库里的表的记录存在里面,大家看看小弟我的语句哪有有关问题

我在MFC中定义了个数组,然后把数据库里的表的记录存在里面,大家看看我的语句哪有问题?
数据库里的表有username password id 3个列 这3个列的类型都是 nchar
我开始的时候选择的事一个单文档的程序,后来我发觉不好 于是我就插入了个dailog对话框在工程中 我打算把表里的内容放在 dailog 上的list control控件上 所以出现了下面的问题 忘大家看看
首先我在CMy1App里定义了个 CString a2[200];
然后我做了个判断,再循环的把数据库表里的内容存到了数组里
代码如下
C/C++ code
m_pSet->MoveFirst(); // fails if recordset is empty  
int i=1; 
while (!m_pSet->IsEOF()) {  
 
pDC->TextOut(pText.x, pText.y, m_pSet->m_username); 
app->a2[3*i-3]=m_pSet->m_username ;
 
pDC->TextOut(pText.x+1000, pText.y, m_pSet->m_password);
app->a2[3*i-2]=m_pSet->m_password ;
pDC->TextOut(pText.x+4000, pText.y, m_pSet->m_id);
app->a2[3*i-1]=m_pSet->m_id ;  
  
 i++;
m_pSet->MoveNext();  
 
pText.y -= nLineHeight;  
 
} 


我想经过这个循环 数据库里表里的记录全部都存在数组里了

然后我在dailog 调用了这个数组 把数组中的内容一次显示在list control上,下面是我实现的语句

C/C++ code
CMy1App *app1=(CMy1App*)AfxGetApp();  
 
   m_pSet1->MoveFirst(); // fails if recordset is empty  
   int k=1; 
    int nItem = m_list.GetItemCount ();
   while (!m_pSet1->IsEOF()) 
   {
       m_list.InsertItem(nItem,_T(""));
       m_list.SetItemText(nItem, 1, app1->a2[3*k-3]);
       m_list.SetItemText(nItem, 2, app1->a2 [3*k-2]);
       m_list.SetItemText(nItem, 3, app1->a2 [3*k-1]);
     k++;
    m_pSet1->MoveNext(); 
   }

编译无错误 但运行时程序崩溃 哎 又奔溃,换了n种写法了 大家来看看 是哪出错了 再次感谢,需要你们的鼓励和支持啊

------解决方案--------------------
两个可能:
1.
m_pSet这个变量没有获取记录集,就是说这个变量无效.
2.
CString a2[200];定义大小不够,只能存200/3=66个记录,可能你的记录超过66个了
你单步执行,看看是在哪条语句出的错
------解决方案--------------------
问题可能出在listctrl的使用上!另外,试着不再用中间变量数组,而是在遍历数据库时直接读入listctrl中去~!
------解决方案--------------------
另外,崩溃,怎么样的崩溃??