版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、诚信本人:我所呈交的本科毕业设计是本人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,中不包含其他人已经或撰写过的研究成果。与我一同工作的对本本做的任何贡的法律结果由已在中作了明确的说明并表示了谢意。本人完全本人承担。申请与资料若有不实之处,本人承担一切相关责任。本人签名:日期:年月日毕业设计()任务书设计()题目:数据库的 LabVIEW 接口程序设计学院:信息学院专业:自 控班级:自控 1106学生:李 硕指导教师(含):(讲师) 专业:李大字 1. 设计()的主要任务及目标研究 SQIite 数据库的配置与操作;研究如何使用 C#语言操
2、作 SQIite 数据库;以LabVIEW 为混合编程实现子 VI 调用 SQIite 数据库。2. 设计()的基本要求和内容符合 SQL 语言的基本语范;能准确运用 SQL 实现对数据库的读写操作;选取流程工业数据,实现子 VI 对数据库的读写操作的基本指令。3. 主要参考文献1BASTIDA H, PONCE P, RAMREZ R. Mand Control for CoupledUsingLabviewC/Mechatronics,Electronics and Automotive Engineering (ICMEAE),2013ernational Conference on.
3、IEEE,2013:127-133.2数据库系统的研究与实现J. 单片机与嵌,.入式系统应用, 2008, (6).3开发方法的研究J.化工自动化及仪表, 2002,扶碧波,29(3).虚拟仪器:10.3969/j.i.1000-3932.2002.03.010.4. 进度安排设计()各阶段名称起 止日期1阅读文献,撰写相关1 月 1 日1 月 31 日2完成文献综述,并做初步研究3 月 7 日3 月 31 日3根据课题,学习与 C 的基本内容4 月 1 日4 月 20 日4以具体要求代码实现4 月 20 日5 月 10 日5完成5 月 10 日6 月初摘要近年来随着系统迅速发展数据库在数据整
4、合管理方面给予了嵌入与 LabVIEW 的接式系统强大的技术支持,本课题旨在设计开发口程序。数据库本文首先介绍了 LabVIEW 图形化开发环境和虚拟现实技术的现状与发展,针对其各自特点及优势进行了探讨,然后简明扼要的概括了数据库的特点及优势,并确定选题的研究意义;其次通过对 LabVIEW 各类控件及接口,C#语言编程技术及数据库的几种 DLL 文件的技术分析,提出了几种可以完成接口程序设计的方案,并结合自身实际情况及方案可完成度,总结出了设计开发接口程序的总体设计方案;接下来严格按照设计方案进度开始设计程序,经过前期的摸索,逐步实现了基础程序模块设计,从新建数据库开始,依次完成了创建表格、
5、删除等基本操作,并最终实现数据库查询反馈等重要功能。数据、修改表格内容、课题最后使用 LabVIEW 将自行设计的程序生成了安装文件和可执行程序(EXE)供用户使用,实现用户对数据库的基本操作及了该设计的可行性。,继而完成本课题预期目的,证明数据库;虚拟仪器;LabVIEW:ABSTRACTIn recent years,database gave embedded system aerful technical supportin dataegration management with the radevelopment of embedded system.Thecontent of t
6、his disserion involves the design and development of theerface programbetn LabVIEW andly, the thesis.roduLabVIEW graphical development environment, thepresent situation and development of virtual reality technology, their characteristics andadvantages are discussed respectively, based on which the r
7、esearch purport is decided, Thensuccinctly sums up the characteristics and advantages ofdatabase, and identifyingthe research significance of this topic; Secondly, byyzing the technical of various typesof controls anderfafor LabVIEW, C# language programming and DLL files ofdatabase, several schemes
8、for designing theerface program are summarized.Combined with my own actual situation and the completing degree of programs, sums upthe design and development of the overall design for theerface program. Next, start toprogram the design pros strictly according to the design plan, after the early expl
9、oration,Gradually achieve the foundation program module design, followed by completing the creation of a table, insert the data, modify table contents, deleting and other basic operations, and ultima y the important function of the database query feedback.Finally, the thesis generate a self-designed
10、 program to the installation files andexecutable (EXE) for users by using LabVIEW, achieving the basic operation andmaenance of the database users and then completing theended pure of this projectto prove the feasibility of the design.Key words:embedded database,virtual instrument,LabVIEW目录前言1第 1 章
11、绪论2第 1.1 节 课题研究背景2第 1.2 节 LabVIEW 和发展现状31.2.1 LabVIEW 的发展31.2.2现状3第 1.3 节 课题意义和主要内容4第 2 章 接口程序设计技术分析5第 2.1 节第 2.2 节第 2.3 节术分析5接LabVIEW 调用技术5接口程序设计框架6第 3 章 基础程序模块设计实现8第 3.1 节 LabVIEW数据库8创建(或打开已有)数据库8执行 SQL 语句9LabVIEW 和 DLL 之间参数配置说明13对数据库进行基本操作14第 3.2 节 LabVIEW 调用C#DLL 文件数据库173.2.1 C#创建和调用 DLL173.2.2
12、LabVIEWC#编写的 DLL21使用 VS2010 生成预定的 DLL 文件21使用LabVIEW2014 调用生成的 dll23建立工程子 VI24常见错误处理28第 4 章 接口程序设计实现及调试30第 4.1 节 生成可供调用的 DLL 文件30第 4.2 节 创建工程编写程序 VI32逐个编写子 VI32主程序功能实现35第 4.3 节 生成可执行文件38生成前准备38生成可执行程序38论42结参考文献43致谢45前言系统成为当前 IT 行业的焦点之一,已在计算机技术的飞速发展的当下,被广泛应用于各个领域。的用户群也越来越希望能对产品中的数据进行更有效的管理。数据库便是一个非常有效
13、的工具,它能够使用户在产品中方便地、删除或修改数据,按照用户要求对数据进行排序查询,还具有如数据加密这样更实用的功能。系统在国内的研发也是近年来才起步的,然而发展极为迅速。但随着应用领域的不断扩展,需要处理的数据量也在不断增加,文本式的数据管理模式渐渐呈现出局限性,成了系统研发的瓶颈,对数据的整合管理需求上升是 2000 年开发出来的系统中。它的源代码完全开到数据库层面,一种中小型系统迫切需要数据库技术支持。数据库,可以较为方便地运用于放,可以免费用于任何用途,包括商业目的。把数据库应用于系统中进行数据管理,不仅可以使程序的运行效率大大提高,还会让源程序具有更好的可读性和可性。LabVIEW
14、是一种程序开发环境,类似于 C 和 BASIC 开发环境,但是 LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而 LabVIEW 使用的是图形化编辑语言 G 编写程序,产生程序是框图的形式,所以尝试用 LabVIEW 开发数据库更加方便快捷,具有更加广阔的发展前景。通常的应用中,对数据的操作用到的都是数据库的最基本的功能,如建立表格、查询等完全能够满足这些功能要求,并且它的 API 极其易于使用,等。精干高效的只需要三个用来执行 SQL 和获得数据的函数。LabVIEW 和 C#语言接口的方法使用方便,可以根据实际应用的需要,充分利用 C#语言及其优
15、势来扩展 LabVIEW 的功能,与此同时混合编程的完成极大增强了 LabVIEW 同其他应用程序之间的数据传输与共享能力。根据上述现状,本课题设计了基于 LabVIEW 的数据库接口程序,通过充分认知 LabVIEW 中的与其他应用程序之间的 API,搭建起调用数据库的 DLL文件的子 VI,继而使用 DLL 文件内已经封装的多个函数以 LabVIEW 为编写程序完成对数据库的基本操作,如建立表格、查询、修改、删除、排序等等,通过上述程序能够很好地充分利用并实现数据库最强大的查询管理功能。第 1 章 绪论第 1.1 节 课题研究背景虚拟仪器是计算机、现代测试、仪器仪表等技术结合的产物,通过应
16、用程序将计算机与功能模块硬件结合起来,采用交互式图形界面操作计算机来控制各种功能模块,完成对被测试量、分析处理等任务,突破了传统仪器在功能单一和数据交换不易等方面的局限1,2。而随着系统的广泛应用及用户对数据处理和管理需求的不断提高,数据库技术与各种智能设备的紧密结合得到重视,数据库除了具有传统数据库的主要功能,还具有和支持移动技术两种特性,因此通常设备中3,4。通过 LabVIEW 与 C 混合编程的接口被用在掌上电脑、移动等程序调用数据库的技术不再受单一操作系统的限制,可以随时随地处理业务、传递信息,可以说,这种技术的发展能提高数据信息接入的普遍性,使人们可以随时随地获取信息,实现更为快捷
17、的信息传递5-7。系统的研发是近年来才起步的,然而其发展极为迅速,随着应用领域的不断扩展,层面,需要处理的数据量也在不断增加,对数据的整合管理需求上升到数据库系统迫切需要数据库技术支持,而的问世则解决了以上难题。系统中,可以运行在所有主流操8-11没有外部依赖性,更容易地应用于作系统中,它提供对 SQL 的大多数支持,包括多表、索引、事务、视图、触发和一系列的用户接口及驱动,的设计目标是的,而且目前已经在很多设备中,可能只需要几百 K 的内存产品中使用了它,它占用资源非常的低,在就够了12;的移植性很好,它的数据库文件在其所支持的所有操作系统、硬件体系结构和字节顺序上都是兼容的二进制且;作为程
18、序库,提供完整的最简单最易用的 API,不仅具有很好的文档而且很直观,它的设计有助于从多方面定制,例如可以通过 C#语言实现自己定制的 SQL 函数,更重要的是开源社区创建交互13-15,例如 C#、LabVIEW 等。以上的一些了很多种语言和程序库用来与特性使其成为强大而灵活的关系型数据库前端,简单而紧凑的 B-tree 后端。此外,提供的源代码模块清晰,注释完整,并且易理解、易定制,方便获取,可以根据需要重编译应用于其他,例如 LabVIEW 等。第 1.2 节 LabVIEW 和发展现状1.2.1 LabVIEW 的发展近些年,世界各国的许多大型自动测控和仪器公司均相继研发了不少的虚拟仪
19、器开发,但最早和最具的还是NI 公司的图形化开发LabVIEW,而作为新兴技术,虚拟仪器在国内处于起步阶段,在数据处理如测量结果的频谱分析,快速变换,各种数字滤波器等方面做出了一些成就。例如用 LabVIEW 编制的虚拟示波器的出现改变了原有示波器的整体设计思路,用代替了硬件,将传统仪器由硬件实现的数据分析与显示功能,改由功能强大的计算机及其显示器来完成,使工程技术可以用一部笔记本电脑到现场就可轻松完成信号、处理及频谱分析和波形分析16-18。而 LabVIEW 本身使用的是图形化编辑语言 G 语言编写程序,以框图的形式生成程序,是目前应用最广、发展最快、功能最强的图形化开发集成环境。但虚拟仪
20、器亦存在其,如不适于或不擅长于完成大量数据处理的任务;不能调用系统程序实现底层操作等,所以尝试通过 LabVIEW 调用开发数据库更加方便快捷,既弥补了 LabVIEW 在这方面的,更充分利用了 G 语言编程方便快捷和开源灵活的特点,在数据处理,信息管理等方面具有更加广阔的发展前景。1.2.2现状数据库提供了以源码发布的方式,要在众多的硬件进行移植,操作系可以根据不同对源码进行交叉编译来实现。数据库通常是与统及具体的应用集成在一起,无需独立运行数据库引擎,由程序直接调用相应的 API19-21是一个实现了内置的进程型就可实现对数据的存取操作。库,它实现了自我包含,无服务器,零配置,事务型的 S
21、QL 数据库引擎,其完全免费的源代码可以用于任何目的,包括商业的开发。在项目开发中,笔者发现是以 API设备和开发函数库的方式被开发所调用的。随着数据库在桌面产品益广泛的使用,对于使用作为数据库管理系统的来说,能否准确的知道当前数据库的状况,能否方便的调试和数据库的执行,这对于减少数据库设计方面的错误和缩短产品的开发周期都是的。第 1.3 节 课题意义和主要内容虚拟仪器能通过应用程序将计算机与功能模块硬件结合起来,采用交互式图形界面操作计算机来控制各种功能模块,完成对被测试量、分析处理等任务,突破数据库除了具有传统数了传统仪器在功能单一和不易等方面的局限。据库的主要功能,还具有可移植性、紧凑性
22、、简单性、灵活性、可靠性和易用性等其他强大特性,更是一个非常有效的工具,它能够使用户在产品中方便地、删除或修改数据,按照用户要求对数据进行排序查询,通过 LabVIEW 与 C 混合编程的接口程序调用数据库的技术不再受单一操作系统的限制,可以随时随地处理业务、传递信息,这种技术的发展能提高数据信息接入的普遍性,使人们可以随时随地获取信息,实现更为快捷的信息传递。在本次课题中以 LabVIEW 为混合编程实现子 VI 调用数据库,此时就可通过在 LabVIEW 中调用 C 来实现,实践证明该方法高效易行,是增强 LabVIEW 整体功能的一条相当可靠的途径。事实证明,LabVIEW 和数据库的广
23、泛应用一定是未来领域发展的一个重要方向,而以其体积小巧、功能强大、接口方便、开源免费等优势成为数据库领域的新宠。因此,间。数据库必将拥有广阔的市场和极度良好的发展空本课题的主要任务是设计 LabVIEW 与数据库的接口程序,通过 LabVIEW与 C 的混合编程更好的展示虚拟仪器与数据库在编程和数据管理方面的强大功能。主要内容:1. 查阅大量国内外关于LabVIEW 和对课题进行全面系统地了解。数据库的理论研究和应用方面的文献,2.(1) 研究数据库的 LabVIEW 接口程序具体设计,主要包括:数据库的配置与操作;(2) 研究如何使用 C#语言操作数据库;(3) 以 LabVIEW 为编程实
24、现子 VI 调用3.dll 文件操作数据库;(4) 利用 C#语言编程生成符合 SQL 语言并能实现对数据库进行操作的 DLL 文件,由 LabVIEW编程实现 VI 调用操作数据库;(5) 程序完成以上功能后,将程序生成可执行文件或者进一步地生成安装文件。第 2 章 接口程序设计技术分析第 2.1 节接术分析是一个小型的 C 程序库,实现了独立的、可嵌入的、零配置的 SQL 数据库引擎,其特性包括事务操作是原子的,一致的,孤立的,并且持久的(ACID 特性),它不像常见的客户-服务器范例,但在大多数常见操作上比主流的客户-服务器数据库引擎更快;引擎不是个程序与之通信的独立进程,而是连接到程序
25、中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接 API 调用,这在消耗总量、延迟时间和整体简单性上有积极的作用,在设计具体的 API 函数之前,先简明一下很多 API 函数中都用到的两个重要的参数类型:3*和3 stmt*,从数据库打开开始,库打开时,就要为3*这个类型准备内存,直到数据库关闭为止。当数据3*类型的变量就代表了需要操作的数据库;3 stmt*数据类型了一条已经把 SQL 语句了并用本身标记的 SQL 语句。整个数据库(定义、表、索引和数据本身)都在宿主主机上在一个单一的 dll到的,不需要进文件中,该文件的源代码在Home Page 主页上是可以免费行安装和管理
26、,封装简单,易于使用的 API 函数,并且可用于任何用途,它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的,内建 TCL 绑定,另外提供可用于许多其它语言的绑定,这也为本课题提供了方便,可于 LabVIEW 平台上直接通过自带的调用库函数节点(Call Library Function Node)调用。第 2.2 节LabVIEW 调用技术LabVIEW 是一种用图标代替文本行创建应用程序的图形化编程语言。传统文本编程语言根据语句和指令的先后顺序决定程序执行顺序,而 LabVIEW 则采用数据流编程方式,程序框图点之间的数据流向决定了 VI 及函数的执行顺序。LabVIEW提供
27、很多外观与传统仪器类似的控件,可用来方便地创建用户界面。用户界面在LabVIEW 中被称为前面板。使用图标和连线,可以通过编程对前面板上的对象进行控制。这就是图形化源代码。LabVIEW 的图形化源代码在某种程度上类似于流程图,因此又被称作程序框图代码。但是现有的 LabVIEW 版本本身并不具备数据库功能,不能像 VB、VC+、Delphi、erBuilder 那样非常方便的进行数据库程序的开发。因此以 LabVIEW 编制的虚拟仪器系统需要其它辅助的方法来进行数据库。(1) 利用 NI 公司的附加工具包中的数据库接口工具包 LabVIEW SQL Toolkit 进行数据库。该工具包集成了
28、一系列的高级功能模块,这些模块封装了大多数的数据库操作和一些高级的数据库功能。它的优点是易于理解,操作简单,用户可以不学习 SQL 语法。缺点是需要另外且价格昂贵,无疑会增加系统成本。(2) 利用 LabVIEW 的 ActiveX 功能,调用ADO 对象,利用 SQL 语言ADO 以及 SQL 语言有较深实现数据库的。使用这种方法需要用户对的了解。(3) 通过第开发的免费工具包 LabSQL。LabSQL 利用ADO 以及 SQL 语言来完成数据库,将复杂的底层LabSQL Vis 以供用户使用。ADO 及 SQL 操作封装成一系列的(4) 通过调用动态库 DLL (Dynamic Link
29、 Library)。先利用其它语言如Visual C+编写 DLL,再利用 LabVIEW 的调用库函数节点 CLFN(Calling LibraryFunction Node)调用此 DLL数据库。但这种方法需要从底层进行复杂的编程才能实现,对非专业编程来讲是不现实的。(5) 利用中间文件存取数据。先将数据存入文件之中,待测量结束后再用专门的工数据导入到数据库之中。这种方法需要磁盘文件作为中介,而且不具有实时性,不方便使用。的特点,拟采用 C#编写 DLL针对上面提到的五种数据库的特点,结合文件实现对数据库的。第 2.3 节 接口程序设计框架通过上两节内容的分析,本课题拟采用以下设计方法实现
30、程序设计:首先以LabVIEW 开发编写程序,程序 VI 包括 3 个部分:程序前面板、框图程序和图标/连接器。程序前面板用于用户设置输入数值和观察输出量,生成模仿传统仪器的控制面板;每一个程序前面板都对应着一段框图程序,框图程序用 LabVIEW 图形编程语言编写,类似传统程序的源代码,连接器是子程序 SubVI 被其它 VI 调用的接口。数据库提供了完整的 API 接口,本次课题通过 LabVIEW 的 API其次使用接口功能即调用库函数节点(在程序框图界面右键选择互联接口库与可执行程序调用库函数节点)来实现对数据库的操作。图 21 是数据库的操作流程。第 3 章 基础程序模块设计实现第
31、3.1 节 LabVIEW数据库3.1.1 创建(或打开已有)数据库打开数据库用到的是3_open(const char *filename, 3 *ppDb);3_open()。函数原型如下:/* Database filename (UTF-8) */* OUT:db handle */通过该函数开始数据库操作之前,需要输入的参数是数据库文件的完整路径,例如:c:test.db。3 * 返回的是数据库的操作句柄(),是一个 32 位有符号整型_OK(0)则表示操作正常。数据。函数返回值表示操作是否正确,如果返回图 31:LabVIEW 中打开数据库节点图 32:3_open 参数配置3.1
32、.2 执行 SQL 语句执行一条 SQL 语句需要三个步骤,与之相关的函数为:3_prepare()、3_step()、3_finalize(),即编译 SQL 字节码、执行语句与销毁字节码,下面详细的展示了这几个函数的作用和用法。a. SQL 语句(编译)中并不能直接识别 SQL 语句,在执行 SQL 操作前需要先将 SQL 语句编译3_prepare()函数来执行SQL成可识别的二进制字节码,为此提供了语句的编译。3_prepare()函数原型为: 3_prepare(3 *db, const char *zSql,nByte,3_stmt *ppStmt, const char *pzT
33、ail);/* Database handle */* SQL sement, UTF-8 encoded */*um length of zSql in bytes. */* OUT: Semenndle */* OUT: Poer to unused portion of zSql */函数返回的参数 Stmt 是已成功编译的二进制字节码,提供给后续的操作函数使用,如图 34。图 33:LabVIEW 中编译 SQL 语句节点图 34:3_prepare()接口函数3_prepare 参数配置数据库是当前比较便捷的使用法。注:输入参数中只有第一条 SQL 语句才会被接口函数编译。b. 执行
34、 SQL 语句在 SQL准备好之后, 需要调用3_step()函数来执行 SQL 语句。3_step()函数原型:3_step(3_stmt*);图 35:LabVIEW 中执行 SQL 语句节点成功执行完UPDATE、CREATE3_step() 后并不会返回_OK(0),在执行 INSERT 、TABLE、DELETE 等数据库操作时,如果 SQL 语句执行成功或者正常3_step() 函数将返回_DONE(101),否则将返回错误代码。在执行 SELETE 操作时,如果 SQL 返回了查询结果,_ROW(100)。3_step() 函数将返回图 36:3_step 参数配置图 37:La
35、bVIEW 中结束 SQL 语句节点图 38:3_finalize 参数配置c. 结束 SQL 语句在关闭数据库之前,必须先将所有之前已经准备好的3_prepare()函数之后,任何时候都可以通过调用并销毁,在执行了3_finalize()函数将一个准备好的 SQL销毁。3_finalize()函数原型:3_finalize(d.关闭数据库3_stmt*);3_finalize()函数将 SQL3_close()函数通过调用销毁之后,即可用关闭已打开的数据库,内存资源。3_close()函数原型:3_close(3 *);图 39:LabVIEW 中关闭数据库节点图 310:3_close 参
36、数配置运用上述操作完成在 LabVIEW 中通过调用3 中的函数创建数据表实例,图 312 和图 313 分别是该实例的程序框图和运行后的前面板的显示情况。图 311:LabVIEW 中创建数据表实例程序框图图 312:运行后前面板显示情况3.1.3 LabVIEW 和 DLL 之间参数配置说明DLL 和 LabVIEW 之间传递参数,最常用的三种数据类型是数值、数值型数组和字符串。C 语言中经常把指针或者数据的地址在函数间传递,在 32 位操作系统中,可以使用 32 数值来表示指针。因此,当需要在 LabVIEW 中传递指针数据时,可以使用 I32 或 U32 数值类型来表示这个地址类型的数
37、据。但是,64 位的程序中,数据的地址只能使用 I64 或 U64 来表示。这样,如果一个调用了 DLL 函数的 VI,并且函数参数中有地址型数据,使用固定数据类型的数值来表示地址,就要准备两份代码。解决方法是使用 LabVIEW 中的新的数据类型 Poer-sizedeger。这个数据类型的长度在不同的上会自动使用32 位或 64 位长度。如果在 C 语言函数参数中有 const 关键字,可以选中 Constant选项。类型在 DLL 函数和 LabVIEW VI 之间传递没有专有的数据类型,是利用值转变为数值,在传递给 DLL 函数;输出时再数值类型来传递的。输入时先把把数值转为值。对于数
38、组的传递,LabVIEW 只支持 C 数据类型中的数值型数组,传递数组类型需要注意的是“Array Format”要选择“Array Data Poer”。这个设置中还有其他两个选项,带有“Handle”的参数类型都是表示 LabVIEW 定义的特殊类型的。的 DLL 中不会使用到数组参数作为输出值时,要记得为输出的数组数在第开辟空间。开辟数据空间的方法有两种:第法,创建一个长度满足要求的数组,作为初始值传递给参数,输出数的数据就会被放置在输入数组的所在的内存空间内。第二种方法是直接在参数配置面板上进行设置。在 Minimum size 中写入一个固定的数值,LabVIEW 就会按此大小为输出
39、的数组开辟空间。在 Minimum size 中选择函数的其它数值参数,而不是固定数值。这样 LabVIEW 会按照当时被选择的参数值的大小来开辟空间。字符串与使用与数组是非常类似的,实际上在 C 语言中字符串就是一个I8 数组。3.1.4 对数据库进行基本操作图 312 所示为利用 LabVIEW 在数据库 test 中创建简单的空白数据表格的过程,接下来对该表格进行简单的操作如 insert、select、update 和 delete 等。a. insert使用insert 命令可以向表格中一次一条,insert 语句的一般格式:insertotable (column_list) va
40、lues (value_list);其中变量 table 为数据要表的名称,变量column_list 为用逗号分隔的表中必须存在的字段名称,变量 value_list 是用逗号分隔的值列表,值与字段必须一一对应。下面向已经建立好的 student 表格里一条数据,指令为 inserto student (id,number,name)values (NULL,2011014178,lishuo);运行程序之后打开数据库 teststudent 可以看到刚才b.select的数据,如图 314 所示。使用select 形式的insert 命令可以一次多行,其形式为select * from t
41、able wherepredicate,下面重新创建空白表格 student2,执行下列语句 inserto student2 select *from student;即可把 student 表格中的数据完全所示。到 student2 中,如图 315 和 316c. delete使用 delete 命令可以删除表中的,其一般格式为 delete from table where图 313:执行 insert 命令后表 student 情况图 314:update 语句执行前图 315:表 student2 完全相同于 student图 316:delete 语句执行后第一行被删除predi
42、cate;其中 where 子句的用法同 select,但其作用是确定需要被删除的。如图 317 所示,语句 delete from student where name=LISHUO;被执行之后表 student中第一行数据即被删除。d.update用 update 命令可以修改一个表中一行或多行中的一个或多个字段,其一般格式为update table set update_list where predicate;其中 update_list 是一个或多个“字段赋值”的列表,字段赋值格式为 column_name=value。where 的用法同 select 语句例如输入update s
43、tudent set name=LISHUO315 和 318 所示。wherename=lishuo;执行语句前后情况对比如图图 317:update 语句执行后第 3.2 节 LabVIEW 调用 C#DLL 文件数据库3.2.1 C#创建和调用 DLL新建一个类;在类内添加代码实现一个功能简单的实例对象,代码如下; using System;using System.Collections.Generic; using System.Linq;using System.Text;namespace DllTest1public class Class1public void ShowMe
44、ssage()Console.Wriine(调用DLL文件成功!);Console.ReadKey();3. 配置输出:打开解决方案管理器在解决方案 DllTest1 上右键属性,在应用程序选卡中需要注以下三个方面。1.程序集名称 2.默认命名空间 3.输出类型。图 318:配置详情此处这样定义 1.DllTest1;2.DllTest1;3.类库;这些设置对后续调用非常重要。4. 生成 dll,在菜单栏单击生成生成 DllTest1(U),或者按 shfit+F6,此时输出窗口显示生成成功,且在目录下能找到生成的 dll 文件;图 329:生成 DLLTest1 及结果5.用。6.调用该 d
45、ll:新建一个名为 DLLExle1 控制台应用程序,来实现该 dll 的调在新建的项目内添加,该 dll。图 320:结果7.成功后,即可在程序中调用。using System;using System.Collections.Generic; using System.Linq;using System.Text;using System.Runtime.using DllTest1;eropServi;namespace DLLexclass Programle1DllImport(DllTest1.dll)public sic extern void ShowMessage();sic
46、 void Main(string args)DllTest1.Class1 i = new Class1();i.ShowMessage();8.调用结果。图 321:调用结果3.2.2 LabVIEWC#编写的 DLL 使用 VS2010 生成预定的 DLL 文件1. 新建一个类库名为 ConSys;注意:此处的.NET 框架选择 3.5 版本,与后面调用的工具 LabVIEW2014 相对应,否则调用会出错。图 322:解决方案配置2. 在中添加 System.Data.;该文件可在:此处应注意到,适合系统版本的文件,如下图为适用于 32 位 Windows 系统的安装文件
47、,安装解压后在相应的路径下会产生相应的 DLL 文件。图 323:DLL 文件页面3. 在类中编写代码,实现预定的功能,利用代码生成 dll 文件;using System;using System.Collections.Generic; using System.Linq;using System.Text;using System.Data;using System.Data.;namespace ConSyspublic class Class/ / 创建/ 数据库文件/ 要创建的数据库文件完整路径/ 执行的SQL查询语句,创建表 public sic void Create(stri
48、ng dbPath, string dbTableName)using ( Source= + dbPath)Connection connection = newConnection(Dataconnection.Open();using mand(connection)(mandd=newmandText = create table student (idegerprimary key,numbereger,name text) ;mandText = dbTableName;d.ExecuteNonQuery();mandText = drop table student;mand.E
49、xecuteNonQuery();注意:在更改.cs 文件后直接运行生成的 dll 文件无法更新,必须用属性更改文件名的形式重新生成 dll 文件,这时程序内容才能得到修改。 使用 LabVIEW2014 调用生成的 dll注意:.NET Framework 2.0、3.0 和 3.5 使用 CLR 2.0。但不能配置 LabVIEW2014 使用 CLR 4.0 指向较早版本 CLR 的程序集在 CLR 4.0 中运行,且可能不按预期方式执行。如需启用下列对象加载指向 CLR 2.0 的.NET 混合模式程序集,必须使用下面的配置文件:按照下列步骤,配置 LabVIEW2014
50、 加载指向 CLR 2.0 的.NET 混合模式程序集:1. 打开文本编辑器。2. 将下列文本supported Runtime ver=v4.0.30319/将该配置文件保存在LabVIEW.exe 同一个目录下。将文件命名为LabVIEW. exe. config。重新启动 LabVIEW2014。重启后 LabVIEW2014 将加载指向 CLR 2.0 的.NET 混合模式程序集,此处LabVIEW 较早版本不用进行以上配置,可直接进行下面工作。 建立工程子 VI切换到建立 vi 的程序框图,右键选择互联接口.NET构造器节点到程序框图:图 324:.NET 面板此时将自
51、动打开选择.NET 构造器,如下图所示:图 325:.NET 构造器点击浏览按钮,选择要调用的 DLL:点击确定后在对象中选择 Class:,如下图 3.28 所示:图 326:选择 Class()点击确定按钮关闭框。右键选择互联接口.NET调用节点(.NET)到程序框图见图 3.29。图 327:.NET 面板调用节点将构造器节点的“新”输出端与调用节点的“”输入端连接起来,然后点击调用节点上的“方法”,选择要使用的方法,这里选择 Cre3()如图 3.30。图 328:选择函数 Cre3()右键选择互联接口.NET关闭到程序框图,并连接调用节点的“输出”输出端到关闭如下图所示。的“”输入端
52、,右键关闭的错误输出创建显示控件,图 329:.NET 关闭对应的 VI 程序框图界面:图 330:VI 程序框图前面板显示情况为:图 331:前面板面板 db TableName 字符串输入控件中输入 SQL 语句 createtable student (idbrowser 查看生egrimary key,numbereger,name text);运行程序后利用成的数据库表如图 3.34:图 332:创建 student 表格由此可知程序已经成功调用 dll 文件并运行成功。同样输入下列 SQL 语句:insert insertinserto student values (1,2011
53、014177,Li Haozhang);o student values (NULL,2011014178,Li Shuo);o student values (NULL,2011014179,Zou Yanbin);运行程序后,刷新数据表如图,已经在表 student 中了 3 行数据如图 3.35。图 333:数据图 334:修改数据输入 update student set name=LISHUO where name=Li Shuo;语句,运行程序刷新数据表,结果表中 Li Shuo 数据被修改为 LISHUO,如图。输入 delete from student where name=
54、LISHUO;语句并运行程序,数据表中LISHUO 数据所在的行被删除如下图。图 335:删除数据 常见错误处理在运行 LabVIEW 程序时可能出现下面的错误:调用节点异常 System.Dll NotFound Exception: 无法加载.erop.DLL 文件,找不到指定的模块。这个问题是在程序绿化 System.Data.法:.dll 的时候出现的,有以下几种解决办1 在下面的的 1.0.81 版本的单文件整合型的 dll 是可以直接使用的。/2 在下面的的 Setups for 32-bit Windows (.NET Framework 3.5 SP1)的安装文件
55、安装后也是可以解决问题的但上面两种都有可能不是最理想的解决方案,1方案的 dll 是 2010 年 4 月 18 日更新的版本,有点老旧,2方案需要在电脑上进行一次dll 文件,如你所知是通过单独调用就可以的,于是在setup的安装,而的piled来上Binaries for 32-bit Windows (.NET Framework 3.5 SP1)成了最佳解决方案,此处的是一个 zip 压缩文件,解压后里面的 dll 直接放在应用程序目录下即可以解决问题,但这样的 zip 也有两个选择。3 一个是带有 bundle 字样的单 dll 形式的,经测试,在.Net 2.0 安装正确的前提下,
56、这个方案也是可以解决问题的。4 还有一种是不带有 bundle 字样的,内会多出一个.erop.DLL 文件,这个文件虽然在编程的时候不用添加 ,但是在程序运行的时候需要和 System.Data.dll 放在同一目录下才可以。本课题中直接采用第4种方案解决出现。第 4 章 接口程序设计实现及调试第 4.1 节 生成可供调用的 DLL 文件按照第 节所述创建一个类库并进行同样设置,添加所需,具体过程不再赘述,在类中编写如下代码,using System;using System.Collections.Generic; using System.Linq;using Syste
57、m.Text;using System.Data;System. Data.using System.Data.;namespace ConSyspublic class Class/ / 创建/ 数据库文件/ 要创建的数据库文件完整路径/ 执行的SQL查询语句创建表 public sic void Create(string dbPath, string dbTableName)using ( Source= + dbPath)Connection connection = newConnection(Dataconnection.Open();using (mandd =d(connect
58、ion)mandText = create table student (idegerprimary key, numbereger, name text) ;mandText = dbTableName; d.ExecuteNonQuery();mandText = drop table student;mand.ExecuteNonQuery();public s public sic string result;ic string SELECT1(string sql, string dbTableName)using ( Source= + dbTableName)Connection
59、 connection =newConnection(Dataconnection.Open();using mand(connection)(mandd=newDataSet data = new DataSet();DataAdapter da = newDataAdapter();mandcmd=d(sql,connection);mand = cmd;DataReader dr = cmd.ExecuteReader(); while (dr.Read()result += dr.GetString(0) + ;/da.Fill(data,name);/result = daables
60、name.ToString();return result;确认无误后生成解决方案和 DLL。第 4.2 节 创建工程编写程序 VI4.2.1 逐个编写子 VI如前面所述新建项目“毕设”,并右键电脑新建VI,添加多个子 VI 并分别命名,图 41:子 VI 树图按照各个子 VI 预定的目的在程序框图界面进行编程,编程方法同第 3 章类似,这里不再详细描述,只说明各个 VI 的功能,其中 create.vi 的功能为创建(或打开已有)数据库,并创建表格或索引等,如图 4.2 所示,其中参数 dbPath 为数据库文件的绝对路径,参数 dbTableName 为面板输入的 SQL 语句(如 cre
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机构研究报告-Brand KPIs for laundry detergent Ace in Mexico-外文版培训课件
- 小麦蚜虫化学防治安全使用指引
- 术后恢复营养饮食方案
- 大棚番茄定植技术操作规范
- 企业双重预防机制建设指引
- 茄果类蔬菜穴盘育苗生产标准
- 客户服务合同到期续签操作指引
- 手法复位治疗安全指引
- 人员密集场所疏散演练方案
- 应急演练评估总结管理规定
- 2026长江财产保险股份有限公司武汉分公司综合部(副)经理招聘1人笔试备考题库及答案解析
- 2026年4月自考10993工程数学(线性代数、概率论与数理统计)试题
- GB/Z 177.2-2026人工智能终端智能化分级第2部分:总体要求
- 2026年广东东莞市初二学业水平地理生物会考试题题库(答案+解析)
- 中远海运集团2026招聘笔试
- 新生儿呼吸窘迫综合征应急预案演练脚本
- 2026中级消防设施操作员《基础知识》记忆口诀
- 物流配送司机奖惩制度
- GB/T 3920-2008纺织品色牢度试验耐摩擦色牢度
- GB/T 19977-2005纺织品拒油性抗碳氢化合物试验
- GB 29540-2013溴化锂吸收式冷水机组能效限定值及能效等级
评论
0/150
提交评论