MFC项目连接数据库并显示读出数据

小白一个,注释有不对的地方请指出,首先,设置一些引用文件的环境变量,

点击项目->属性->vc++目录然后“include目录”(包含目录)那把

“C:\ProgramFiles\MySQL\MySQL Server 5.0\include”给加进来

 再然后“lib目录”(库目录)那里把

“C:\ProgramFiles\MySQL\MySQL Server 5.0\lib”和“C:\ProgramFiles\MySQL\MySQL Server 5.0\lib\opt”

也一起加进来。

以上三个文件在mysql 的安装目录下(默认在C:\ProgramFiles,或有不同)

http://blog.csdn.net/lvshubao1314/article/details/50249955(数据库连接)

做好这些后,就可以敲代码了。

1.添加头文件

#include "winsock.h"

#include "mysql.h"

#pragma comment (lib, "libmysql.lib")

#pragma comment (lib, "mysqlclient.lib")

2.我是在初始化函数读数据库数据下面是初始化函数

void CCMyListViewView::OnInitialUpdate()
{ 
    CListView::OnInitialUpdate(); 
    char *host = "localhost"; 
    char *user = "mysql的用户名 "; 
    char *pass = "mysql服务器密码 "; 
    char *db = " 要访问的数据库database名字"; 
    unsigned int port = 3306; //server port 安装数据库时候默认的是3306
    MYSQL *sock; 
    MYSQL_RES *result; 
    MYSQL_ROW row;
     //初始化数据库对象
     sock=mysql_init(0); 
    //判断数据库连接是否成功 
    if(!(sock &&mysql_real_connect(sock,host,user,pass,db,0,NULL,0)))
     { 
           AfxMessageBox(_T("I'm sorry to tell you that you wrong!"));
     } else 
    {
         //设置返回数据字符集类型 ,不加这个数据库返回的汉字显示回事乱码或问号!!!!!!
         mysql_set_character_set(sock,"gb2312"); //和下面功能一样
         // mysql_query(sock,"set character set gb2312");
         // TODO: 调用 GetListCtrl() 直接访问 ListView 的列表控件,从而可以用项填充 ListView。
         //得到列表对象
        m_pListCtrl=&GetListCtrl(); 
        //清空列表
        m_pListCtrl->DeleteAllItems();
        m_pListCtrl->ModifyStyle(0,LVS_REPORT);
        m_pListCtrl->SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT); 
        CString str_gradName[] ={_T("ID"),_T("name"),_T("ege"),_T("adress"),_T("salray")};
        //插入列,设置列字段名
        for (int i = 0; i < 5; i++)
        {
               m_pListCtrl->InsertColumn(i,str_gradName[i],LVCFMT_CENTER,50,-1);
        }
        CString m_name,m_adress,m_id,m_ege,m_salary; // 查询语句
        char sql[100] ="select * from employee"; 
        //开始查询
        mysql_real_query(sock, sql, (unsigned long)strlen(sql));
        result = mysql_store_result(sock);//mysql_free_result(result);
        int i=0;
        while((row = mysql_fetch_row(result)))
        { 
                //row是字符数组,元素个数取决于数据库表的关键字个数,按顺序一一对应
                m_id=row[0];
                m_name=row[1];
                m_ege=row[2];
                m_adress=row[3];
                m_salary=row[4];
                int nRow = m_pListCtrl->InsertItem(i,m_id);//插入行
                 m_pListCtrl->SetItemText(nRow, 1, m_name);//设置数据 
                m_pListCtrl->SetItemText(nRow, 2, m_ege);//设置数据
                m_pListCtrl->SetItemText(nRow, 3, m_adress);//设置数据
                m_pListCtrl->SetItemText(nRow, 4, m_salary);//设置数据
                i++;
        } 
    //释放内存空间
    mysql_free_result(result);
}

猜你喜欢

转载自blog.csdn.net/ya4599/article/details/52102613