C++中 MFC DLL如何連接mysql數據庫以及按條件查詢和時間的比較


1.把mysql數據庫的以上文件複製到 “右鍵點擊項目名——》在文件資源管理器中打開文件夾”中。

2.右鍵點擊項目名——》添加——》現有項,選中從mysql複製過來的所有文件,點擊添加。

3.可以寫代碼了。

extern "C" bool PASCAL EXPORT queryId(int numA)

{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    // 此處爲普通函數體    
    bool flag=false;
    MYSQL m_sqlCon;  
    try{  
        mysql_init(&m_sqlCon); 
        if(!mysql_real_connect(&m_sqlCon, "IP地址","登陸名","登陸密碼","數據庫名",3306,NULL,0)){  
            AfxMessageBox(_T("數據庫連接失敗!"));
        }else{
             char select_user[255];
             CString beginDate,endDate;
             int num_col;
             MYSQL_RES *result=NULL;
             MYSQL_ROW mysql_row;

             sprintf_s(select_user, "select * from gmicus where id='%d'", numA);
             if (mysql_query(&m_sqlCon, select_user) || !(result = mysql_store_result(&m_sqlCon))) {
                 AfxMessageBox(_T("程序運行錯誤!"));
              }
             num_col=(int)mysql_num_fields(result);
             if(mysql_num_rows(result)==0) {
                 AfxMessageBox(_T("未找到您的信息!"));
             }else{
                 while (mysql_row = mysql_fetch_row(result))//獲取具體的數據
                {
                    for (int i = 0; i < num_col; i++)
                    {       
                        if(i==2){
                            beginDate=CStringW(mysql_row[i]);
                        }
                        if(i==3){
                            endDate=CStringW(mysql_row[i]);
                        }
                    }
                }
                 CTime m_time;;
                 CTime datetime;
                 datetime=CTime::GetCurrentTime();                                                                              
                 CString str2=datetime.Format("%Y-%m-%d %H:%M:%S");  
                 /*CString str;
                 str.Format(_T("%s"), str2);
                 AfxMessageBox(str);*/
                 COleDateTime begin;
                 begin.ParseDateTime( beginDate );   
                 COleDateTime end;
                 end.ParseDateTime( endDate );
                 COleDateTime nowDate;
                 nowDate.ParseDateTime( str2 );
                 if(nowDate>=begin && nowDate<=end){
                    flag=true;
                 }else{
                    flag=false;
                 }
             }
            mysql_free_result(result);
            mysql_close(&m_sqlCon);
            getchar();
        }    
    }catch (...){  
         AfxMessageBox(_T("未知錯誤!"));
    }

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