NI LabWindows CVI連接MySQL數據庫實例


MySQLl數據庫版本:5.7

CVI版本:2012


 

1.到NI官網下載LabWindows/​CVI SQL​工具包,我下載的最新版本2.2

 

 

 

 

 

下載完成后點擊安裝,安裝到最后如果有提示登錄賬號以繼續安裝不用管。

2.打開CVI,在library菜單就可以看到安裝成果。點進去就可以看到數據庫相關API。

 

 

 3.確認你的數據庫版本,下載對應的ODBC工具。版本對應關系可以參考:

 

 

 

 

我使用的MySQL版本是5.7,我下載的ODBC工具是5.1,ODBC工具下載地址:https://downloads.mysql.com/archives/c-odbc/

 

 注意:需要選擇32和64,和CVI以及數據庫對應。

 

 

 下載完成后安裝。

4.打開OBDC連接工具。

點擊右側添加,選擇MySQL ODBC

 

 

 

 

 

 打開ODBC配置界面,填寫完畢后點擊test,會提示success。

 

 

 5.打開CVI,創建空白程序。

關鍵代碼:

static int conHandle;
int main (int argc, char *argv[])
{
    if (InitCVIRTE (0, argv, 0) == 0)
        return -1;    /* out of memory */
    if ((panelHandle = LoadPanel (0, "database.uir", PANEL)) < 0)
        return -1;
    DisplayPanel (panelHandle);
    DBInit (DB_INIT_SINGLETHREADED);//初始化 
    conHandle=DBConnect("DSN=MytestCVI");//連接數據庫
    RunUserInterface ();
    DiscardPanel (panelHandle);
    DBDisconnect (conHandle);//斷開數據庫
    return 0;
}

查詢第一條數據代碼:

int CVICALLBACK first_callback (int panel, int control, int event,
        void *callbackData, int eventData1, int eventData2)
{

    switch (event)
    {
        case EVENT_COMMIT:
            mapHandle=DBBeginMap(conHandle); //建立映射
            DBMapColumnToInt(conHandle,"id",&id_val, &id_status);//映射變量,val和status均需在之前定義
            DBMapColumnToChar (conHandle, "name", 10, name_val, &name_status, "");
            DBMapColumnToInt(conHandle,"age",&age_val, &age_status);
            DBMapColumnToDouble(conHandle,"score",&score_val, &score_status);
            int stateHandle=DBActivateMap(mapHandle,"student");//激活映射,student為表的名稱
            while(DBFetchNext(stateHandle)!=DB_EOF){
        break;
            }
            SetCtrlVal(panelHandle,PANEL_ID,id_val);//顯示到對應位置
            SetCtrlVal(panelHandle,PANEL_name,name_val);
            SetCtrlVal(panelHandle,PANEL_age,age_val);
            SetCtrlVal(panelHandle,PANEL_score,score_val);
            DBDeactivateMap (mapHandle);//失活映射

            break;
    }
    return 0;
}

測試:

 

 

 2022年3月18日


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM