mfc调用mysql数据库时,如何在listbox上逐行显示调用的数据库的表中的内容呢? 20C

RT。

已经成功实现了在控件上按一下鼠标就能调用指定的数据库。

但是对于调用的数据库中的特定的表如何在listbox上逐行显示还是不知道怎么做。。。

其实已经查了博客园和CSDN等等了,但是没有讲的很清楚的。

唯一一个博客园给了代码,按照他的方法调试了下发现没声明两个变量(不知道啥意思啊)

博客园提供的代码经过我改进后如下,如果有人能看懂,希望能指出问题:
(不知道ItemName和nCount分别代表什么,没有声明啊)

void CthirdstepDlg::OnBnClickedRealresearch() //按钮button的函数
{
    // TODO: 在此添加控件通知处理程序代码


     //初始化数据库对象  
     pConn = mysql_init(NULL); 

     //localhost:服务器地址,可以直接填入IP;root:账号;  
     //123:密码;test:数据库名;3306:网络端口    
     if (!mysql_real_connect(pConn, "localhost", "root",  
         "wtk123", "jeesite", 3306, NULL, 0))  
     {  
         AfxMessageBox(_T("数据库连接失败!"));  
         return;  
     }  
     else//连接成功则继续访问数据库,之后的相关操作代码基本是放在这里面的  
     {  
         AfxMessageBox(_T("数据库连接成功!"));  

         UpdateData(true);  
         //设置数据库字符格式,解决中文乱码问题  
         mysql_query(pConn, "set names 'gb2312'");  

         int t;
         // 执行 sql 语句

         char research_query[200]={0};

         CString choose_name;

         m_researchname.GetWindowText(choose_name); //获取输入静态文本框的字符串

         strcpy(research_query,select_head);
         strcat(research_query,"zd_resourse");
         strcat(research_query," where name like '%");
         strcat(research_query,choose_name);
         strcat(research_query,"%'");
         strcat(research_query,"");

         t = mysql_query(pConn,research_query);

         res = mysql_store_result(pConn);

         while (res!=NULL)
         {
             if (NULL!=(row=mysql_fetch_row(res)))
             {
                 if (row[0]!=NULL)
                 {
                     ItemName[nCount++]=row[0];//不知道ItemName和nCount分别代表什么,没有声明啊
                     m_Filelist.AddString(row[0]);
                 }
             }
             else
             {
                 break;
             }
         }


        // while(row = mysql_fetch_row(res))
       //  {
      //     printf("%s %s\n",row[1],row[2]);
       //  }



         mysql_free_result(res);
         mysql_close(pConn);




     }  
     }  
     UpdateData(false);  
     mysql_close(pConn);//关闭Mysql连接  








}

我的大致思路就是先创建一个空表,然后用for循环从i=0开始,逐行调用AddString函数来显示,然而具体怎么操作就不知道了——希望懂的人能贴一下代码,感激不尽!!!

2个回答

ItemName[nCount++]=row[0];//不知道ItemName和nCount分别代表什么,没有声明啊
ItemName应该是一个字符串数组,nCount变量保存的是这个数组中已经有的数据的数量

这段代码在添加列表框的同时还把数据放在了这个数组里

weixin_42373421
玉虚宫叶少保 您好,按照你的指点添加了如下代码:string ItemName[]={0};int nCount;nCount=sizeof(ItemName) / sizeof(ItemName[0]);但是调试时不出错,按按钮时却显示存在空指针,程序强行终止,请问这是怎么回事?
一年多之前 回复

如果只是在listbox显示,你注释掉那行没有声明的代码就行

weixin_42373421
玉虚宫叶少保 不行啊,那样不但没法显示,系统还会崩掉的
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问