您的位置首页生活百科

LabWindows CVI-Access数据库

LabWindows CVI-Access数据库

的有关信息介绍如下:

LabWindows CVI-Access数据库

NI LabWindows/CVI数据库连接(SQL)工具包提供了一套简单易用的工具,使用户能快速连接本地或远程数据库,并且无需进行结构化查询语言(SQL)编程就可以执行诸多常用的数据库操作。可以更方便地连接各种常用数据库,如Microsoft Access、SQL Server和Oracle。如需高级数据库的功能和灵活性,LabWindows/CVI数据库连接(SQL)工具包还可以提供所有SQL功能。

到NI官网下载,注意下载的版本是否支持对应的计算机操作系统和LabWindows/CVI版本;

2LabWindows CVI-SQL工具包

打开LabWindows CVI 2013,选择 New-project,如下图所示;

File-New-User Interface(*.uir);

File-New-User Interface(*.uir);

在untitled panel界面上放置如下几个控件:Name(字符串),Age(整数),PVale(浮点数),PDateTime(字符串代替时间,因为cvi没有时间控件),Write(Command Button),Close(Command Button);

Code-Generate -All Code,弹出如下对话框,选择Yes;

Set Target File,选择OK;

Generate ALL Code,1)设置Target File:Create New Project;2)Traget Type:Executeable;3)Project Filename;4)Source FileName;5)选择启动Panel;6)选择退出应用程序按钮;点击OK;

选择Project Location:Create Project in Current Workspace;Transfer Project Options:Bulid Options;点击OK;

生产初始化代码:

#include

#include #include "cviaccess.h"static int panelHandle;int main (int argc, char *argv[]){if (InitCVIRTE (0, argv, 0) == 0)return -1;/* out of memory */if ((panelHandle = LoadPanel (0, "cviaccess.uir", PANEL)) < 0)return -1;DisplayPanel (panelHandle);RunUserInterface ();DiscardPanel (panelHandle);return 0;}

int CVICALLBACK WriteFunc (int panel, int control, int event, void *callbackData, int eventData1, int eventData2){char sql="",fileName="",ConnectStr="";switch (event){case EVENT_COMMIT:break;}return 0;}

int CVICALLBACK CloseFunc (int panel, int control, int event, void *callbackData, int eventData1, int eventData2){switch (event){case EVENT_COMMIT:QuitUserInterface (0);break;}return 0;}

新建一个名称为MyDB.mdb数据库,并新建名称为Train的表:包括ID(自动编号),Name(段文本),Age(整数类型),PValue(双精度类型),PDateTime(日期/时间)一共五列;

新增如下代码:

#include #include #include "cviaccess.h"#include "cvi_db.h" //Cvi sql toolkit头文件

#include #include static int panelHandle,hdbc,hstat;struct Data{char Name;int Age;double PValue;char PDateTime;}DBData;int main (int argc, char *argv[]){if (InitCVIRTE (0, argv, 0) == 0)return -1;/* out of memory */if ((panelHandle = LoadPanel (0, "cviaccess.uir", PANEL)) < 0)return -1;DisplayPanel (panelHandle);RunUserInterface ();DiscardPanel (panelHandle);return 0;}

int CVICALLBACK WriteFunc (int panel, int control, int event, void *callbackData, int eventData1, int eventData2){char sql="",fileName="",ConnectStr="";switch (event){case EVENT_COMMIT: GetProjectDir(fileName); //获取当前目录 strcat(fileName,"\\MyDB.mdb"); //获取当前数据库目录 GetCtrlVal (panelHandle,PANEL_Name, DBData.Name);//获取前面板Name GetCtrlVal (panelHandle,PANEL_Age, &DBData.Age);//获取前面板Age GetCtrlVal (panelHandle,PANEL_PValue, &DBData.PValue);//获取前面板Pvalue GetCtrlVal (panelHandle,PANEL_PDateTime, DBData.PDateTime); //获取前面板PDateTime sprintf(sql,"Insert into Train(Name,Age,Pvalue,PDateTime)Values('%s',%d,%f,#%s#)",DBData.Name,DBData.Age,DBData.PValue,DBData.PDateTime);//格式化插入新值SQL语言字符串 sprintf(ConnectStr,"Driver={Microsoft Access Driver (*.mdb)};Dbq=%s;Uid=Admin;Pwd=123456",fileName);//格式化数据库连接字符串 hdbc=DBConnect(ConnectStr);//连接数据库 hstat=DBActivateSQL(hdbc,sql);//执行SQL语言 DBDeactivateSQL(hstat);//断开数据库break;}return 0;}

int CVICALLBACK CloseFunc (int panel, int control, int event, void *callbackData, int eventData1, int eventData2){switch (event){case EVENT_COMMIT:QuitUserInterface (0);break;}return 0;}

点击RUN,设置控件值Name=Sam,Age=66,PValue=55.55,PDateTime=2016/12/1 8:02:19,然后点击Write;

打开MyDB.mdb数据库,其中新值已经写入;

其他语法请参考SQL语言,方法基本一致;

20LabVIEW访问Access数据库