LabVIEW数据库-数据库高级操作

本文介绍如何在LabVIEW中执行SQL语句、使用游标浏览数据记录、创建和执行存储过程等高级数据库操作技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


数据库高级VI的主要功能
在这里插入图片描述

执行SQL语句

从记录集中获取数据

通过DBToolsExecuteQuery执行select语句,将查询结果返回记录集,然后使用DBToolsFetchRecordestData获取记录集中的数据。

bof?如果为TRUE,则光标指向文件开头(BOF)。
BOF定义为记录集中第一个记录之前的位置。
eof?如果为TRUE,则光标指向文件结束(EOF)。
EOF定义为记录集中最后一条记录之后的位置。
如果BOF和文件结束(EOF)同时为TRUE,则记录集中不存在记录,记录集的导航将返回一个错误。
在这里插入图片描述

带参数的SQL操作

组合字符串设置参数

有时程序中的SQL语句的条件不是固定值,这个可以用组合字符串的方法解决
在这里插入图片描述

带参数的SQL语句

用带参数的SQL语句也可对参数进行设置。
在LabVIEW中,可以使用DBToolsCreateParameterizedQueryVI创建带有参数的SQL语句,使用DBToolsExecuteQueryVI执行带参数的SQL语句。

DBToolsCreateParameterizedQueryVI创建带参数的sql语句时,以?表示需要输入的参数,在parameters中说明SQL参数的名字、数据类型、输入输出性质。
SQL的参数数据类型需要与数据库中的字段的数据类型相同。

创建完带参数的SQL语句,可以通过DBToolsSetParameterValueVI按照参数名字或按顺序指定参数的值。

在这里插入图片描述

浏览数据记录

使用SQL语句查询到的数据,以行的方式组成临时记录集,可以通过游标的方式定位临时记录集中的各个记录。
游标在本质上是系统中一个存放临时数据的缓冲区,由指向记录集中数据行的位置信息和临时数据组成,实现从记录集中逐条提取数据记录的功能。
游标允许应用程序对select语句返回的记录集中的每一行进行相同或不同操作,不需要每次都对记录集进行同一种操作。
游标临时缓冲区按位置可分为服务器游标和客户端游标。
客户端游标的临时缓冲区位于本地客户终端上,与操作相关的整个记录集会通过网络被传送到本地机器上,客户端游标的操作速度很快。但是这种方法需要先把数据从服务器端下载下来,在操作的数据库较大的时候会消耗大量客户端内存。
客户端游标仅支持静态游标。

服务器端的游标的临时缓冲位于服务器,只是把请求的数据返回客户端,在通过网络处理大型数据库时,其性能优于客户端游标。

通常,使用服务器游标就可实现绝大多数游标操作,客户端游标常常作为服务器端游标的辅助,用于完成服务器端游标不支持的Transact语句或批处理。

LabVIEW数据库连接工具包只支持服务器端游标对数据库进行操作。

服务器游标类型

服务器游标的四种类型

游标类型功能
仅向前仅允许在记录集中向前移动浏览记录;在浏览数据期间,不能看到其他用户对数据库的更改;在当前行处理结束后,立即检查数据库是否有变化;使用系统资源最少、性能最高的游标
键集允许前后移动;可以看到其他用户添加到数据库中的记录;其他用户删除的数据库记录暂时不会从当前记录集中移除;常用于在数据量较大的记录集中操作少量记录
动态游标允许前后移动;可实时监测其他用户对数据库的任意更改
静态游标允许前后移动;在浏览数据期间不能看到其他用户的任何更改;显示记录集刚生成时的状态,以后不再变化;常用于不需要检查数据库变化和不需要浏览数据记录的情况

仅需要从头到尾查看数据,可以选择仅向前或静态游标;
返回的记录集中含有大量数据,而仅需要对其中少量几个进行处理,用键集;
需要记录集实时同步显示其他用户对数据库的更改用动态游标;

除非必要,不应频繁改变游标类型;

在LabVIEW中,服务器游标类型可通过DBToolsExecuteQueryVI的cursor type设置。

在这里插入图片描述
可以使用DBTools Move To Previous Record、DB Tools Move To Next Record、DB Tools MoveTo Record N实现数据记录的浏览。

连接数据库
返回数据表user的所有值
判断数据集中是否存在记录
取出数据集中第一条记录的第一个值和第二个值
将游标向前移动一个位置
取出游标当前指向位置的记录的第一个值和第二个值
在这里插入图片描述

存储过程

存储过程由流控制与SQL语句编成。
与宏类似,存储过程是一组为了完成特定功能预先编译过的存储在数据库中的SQL语句。

创建存储过程
create procedure 存储过程名称(in/out/inout 参数名 参数类型(长度))
begin
     SQL语句;
end;

in:该类型参数作为输入,也就是需要调用时传入值
out:该类型参数作为输出,也就是该参数可以作为返回值
inout:既可以作为输入参数,也可以作为输出参数
参数类型长度:不指定长度时mysql会默认一个长度,如int会默认int(11),为什么是11,因为int的有符号类型的最大长度就是-2147483648,是11位的。

查看存储过程
select * from information_schema.routines where routine_schema = 'xxx'; --查看指定数据库的存储过程及状态信息

show create procedure 存储过程名字 ; --查看某个存储过程的定义sql语句


删除
drop procedure [if exists] 存储过程名字;

存储过程可以在DBMS中创建,也可以在LabVIEW中通过DB Tools Execute Query VI执行SQL语句创建。

通过navicat创建一个存储过程:
右键单击查询-新建查询-输入代码-运行
这个是返回表user中,groupID=s_gp的项的总数
在这里插入图片描述

使用LabVIEW完成同一操作
在这里插入图片描述
使用navicat运行已经创建的存储过程:
新建查询,
call需要运行的存储过程,
运行,
结果直接显示在下方

在这里插入图片描述
要用LabVIEW运行已创建的存储过程,只需要将其名称传递给DB Tools Execute Query VI,也可以执行带参数的存储过程。
使用带参数的SQL语句执行存储过程
在这里插入图片描述
组合法执行存储过程
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

斯金

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值