首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

2012-06-05 
我在MFC中定义了个数组,然后把数据库里的表的记录存在里面,大家看看我的语句哪有问题?数据库里的表有usern

我在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中去~!
[解决办法]
另外,崩溃,怎么样的崩溃??

热点排行