安徽365热线-Bets365-365bet线上娱乐

NI LabWindows CVI连接MySQL数据库实例

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日

相关推荐