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