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);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章