Lay.Li 发表于 2022-9-2 09:00:09

看完必恍然大悟的活字格内幕:六十、执行sql命令实战

本帖最后由 Lay.Li 于 2022-9-5 11:00 编辑

大家好啊,这次功能内幕给大家带来的是我们7.1的新功能,执行sql命令:itwn:

活字格7.0 update1新功能解密:十九,命令提升-后端直接执行SQL命令
https://gcdn.grapecity.com.cn/fo ... 98071&fromuid=64322
(出处: 葡萄城产品技术社区)


自打这个命令上线之后,受到了众多格友的追捧。但是相应的大家也产生了一些使用上的问题,比如这个执行sql的结果我要怎么使用,怎么将执行结果在表格中展示,这里的参数要怎么传递等等很多问题。:nbtz5:这篇文章将会通过一下简单的业务场景来给大家展示如何使用执行sql命令

前置知识
首先,在介绍执行sql命令之前,先给大家介绍一下前置的知识,执行sql命令时只能在服务端命令中使用的,关于服务端命令,大家如果不了解,可以参考下方的教程
看完必恍然大悟的活字格内幕:五十九、30分钟,了解服务端命令
https://gcdn.grapecity.com.cn/fo ... 52808&fromuid=64322
(出处: 葡萄城产品技术社区)

活字格6.0 新功能解密:二十三丶服务端命令一(基础功能篇)
https://gcdn.grapecity.com.cn/fo ... 72729&fromuid=64322
(出处: 葡萄城产品技术社区)

活字格帮助手册 第二十五章-服务端命令

然后再让我们来了解一下sql是什么,根据度娘的解释,结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。sql是一种第四代编程语言,区别与c#,java等第三代编程语言,sql具有语言简洁,易学易用的特点。简而言之sql就是用来做增删改查等等一列管理关系数据库系统操作的,虽然sql比较易学,但是还是需要大家花费一定的时间去学习的,这里给大家分享一些学习sql的资料

由罗老师带来的数据库操作入门下半集-sql语句

数据库操作入门
https://gcdn.grapecity.com.cn/fo ... 90902&fromuid=64322
(出处: 葡萄城产品技术社区)

还有网上的一些sql教程,这边找了一个sql教程大家可以参考参考,这种教程在网上有很多,大家都可以搜索一下,找到适合自己的教程来学习
好了。


执行sql命令简介
我们来看一下执行sql命令,在服务端命令中新建一个执行sql命令后,我们来看一下它每一项都是来干啥的


[*]连接字符串-用来选择执行的sql是用来操作哪一个数据库的,可以选择内建库,也可以通过连接字符串来选择其他数据库。点击后边的管理链接字符串就可以添加,更新,删除连接字符串信息。
[*]参数列表-可以添加和删除sql语句中需要使用的参数,添加参数需要为每一个参数命名,设定参数的值和参数的类型。使用参数可以让sql语句的功能更加强大。
[*]sql语句-书写sql语句的地方,执行sql命令执行的就是这里填写的sql语句,勾选使用公式后,就可以选择服务端命令中的其他命令中创建的变量。点击编辑sql语句就可以进入活字格内置的编辑器编辑sql语句,也可以点击打开或者打开方式在其他的编辑器中编辑sql语句。
[*]返回值到变量-设置一个变量。当执行SQL命令时,执行的结果会存储到设置的变量中。
[*]高级设置-可以设置执行sql命令的执行超时时间和缓存过期时间



业务场景实操
介绍完执行sql命令之后,下面我们用简单的业务来使用一下执行sql命令,因为这个demo后边要共享给大家,所以这里我就使用内建库了,外连库中的操作类似,只是有些sql语法可能不同。现在有数据表的设计和数据如下,课程表(课程号,课程名,学分),学生表(学号,姓名,性别,专业),分数表(学号,课程号,分数)。



第一个需求
然后现在有一个需求是老师在页面中输入课程名和学生名来查询这个学生的分数,那要如何通过执行sql命令去实现呢。1.首先我们先来构建一下页面,如图所示,在页面中放置两个文本框用来输入学生名和课程名,查询按钮用来执行命令,分数文本框用来显示结果。

2.新建一个服务端命令,其中学生名和课程名由于是需要老师输入的是动态的所以参数列表中我们添加学生名和课程名参数

写sql语句如下,其中可以通过在编辑sql语句时双击参数列表中的参数的方法在sql中使用这个参数的值

因为不同的数据库的语法是不同的,引用参数所使用的字符也是不同的,所以这里推荐大家通过双击参数的方法来自动生成引用语句,活字格很根据所选的连接字符串来生成符合对应数据库语法的引用语句:itwn:


SELECT 分数表.分数 FROM分数表 join 课程表 on 分数表.课程号 = 课程表.课程号 join 学生表 on 分数表.学号 = 学生表.学号 where 学生表.姓名=@学生名 and 课程表.课程名 =@课程名;
而sql中学生名和课程名参数的值是从哪儿来的呢,是老师在页面中输入的,是输入时调用服务端命令传过来的,所以我们需要给服务端命令中添加两个参数学生名和课程名,然后在执行sql命令的参数列表中选择服务端命令中的参数即可




这样的话,从页面中获取学生名和课程名来查询分数的sql到目前是已经完成了,那我们要如何将查询的分数结果返回到页面中呢。首先我们可以在返回值到变量中写入分数,这样执行sql的结果就会存入到分数变量中。


然后在服务端命令中添加返回命令,返回信息中选择分数变量,就可以将分数变量的值返回到前端页面中。





3.我们的服务端命令就建好了,接下来让我们看看怎么在前端调用这个命令,自爱查询按钮中添加命令,调用刚才建好的服务端命令,从页面中选择单元格传入参数和接收返回信息。

看一下实现效果,我们输入张三,语文点击查询,诶这个结果感觉不太对啊,应该是只有88就可以了,为什么还有其他的信息呢:nbtz5:


json数据源插件
这是因为,执行sql命令的结果是一个json对象数组的类型,那么在活字格中我们要怎么处理数组呢,一般情况下是通过循环命令去取得数组中的每个json对象,再使用"json对象.属性"即可。但是由于这种做法很复杂,但是要处理这种数据的业务场景比较多,所以就诞生了json数据源插件,在插件商城中下载json数据源插件,插件的安装方法可以参考葡萄城市场中的活字格插件介绍





json数据源插件的使用方法下方公开课中有讲解,大致【59分30秒】左右开始讲解

【已结束】活字格6.0 Update1 新版本功能
https://gcdn.grapecity.com.cn/fo ... 82847&fromuid=64322
(出处: 葡萄城产品技术社区)


安装之后就可以在命令中找到导入JSON数据到单元格和导入JSON数据到表格的插件

所以这里我们修改一下查询按钮中的命令,将调用服务端命令的返回信息赋值到页面的v13辅助单元格中,然后使用导入json数据到单元格命令,json数据源选择v13,而执行sql命令返回的json对象中属性名就是select后的字段名,所以这里目标单元格中添加属性名分数,对应单元格选择页面分数后的单元格。

至此,整个业务需求就实现了,让我们看一下实现效果


后续我们再按照自己的需求,隐藏一下辅助单元格或者将调用服务端命令返回的结果保存在变量而不是页面中即可



第二个需求
下面我们来修改一下需求,修改为只输入学生的名称,就查询出这个学生的所有课程和对应的分数。


1.同样的,先设置页面,一个文本框用来接收输入的学生名,查询按钮执行命令,一个空表格用来显示查询数据





2.新建一个服务端命令,和之前的服务端命令差不多,只是参数只有一个学生名,执行sql命令的参数也只有一个学生名。sql语句修改如下,返回结果到课程和分数变量中,在使用返回命令将课程和分数变量返回到前端




SELECT 分数表.分数,课程表.课程名 FROM分数表 join 课程表 on 分数表.课程号 = 课程表.课程号 join 学生表 on 分数表.学号 = 学生表.学号 where 学生表.姓名=@学生名

3.在页面查询按钮中添加命令调用刚才建好的服务端命令,将返回信息返回至json数据源变量

然后使用导入json数据到表格命令将服务端返回的json数据源导入到表格中展示,表格选择表格1,属性名就添加课程名,分数和表格中对应的列引用

让我们看一下实现效果

至此,通过这个两个业务逻辑,就像大家展示了一下执行sql命令最基本的用法,给大家附上工程文件当然执行sql命令可以应用的场景肯定不止这些,还有很多其他的用法比如编写和调用存储过程、创建临时表、创建表索引等等。希望这篇分享可以让大家了解什么是sql,什么是执行sql命令,在活字格中要怎么使用这个命令,大家有任何其他关于sql的问题都可以在论坛发帖交流哈,最后希望大家可以用好活字格,助力低代码开发:loveliness:







页: [1]
查看完整版本: 看完必恍然大悟的活字格内幕:六十、执行sql命令实战