找回密码
 立即注册

QQ登录

只需一步,快速开始

Mr.Hu

金牌服务用户

33

主题

148

帖子

435

积分

金牌服务用户

积分
435
Mr.Hu
金牌服务用户   /  发表于:2024-8-20 08:33  /   查看:1218  /  回复:16
1金币
尝试用SQL命令执行数据操作,看了活字格官方帮助文档中服务端命令执行SQL命令的教程,一个很简单的demo ,SQL语句是  delete from 订单表 where 商品名称="商品1",这样写没有问题,正确执行,可问题这里须操作的数据表名称和删除条件是固定的,显然不符合开发需求,希望把数据表名和删除条件做成用参数传入,可折腾半天,老是报错,500错误,看了下,应该是传入的参数是字符串,可数据表名和删除条件中的字段名称是不允许带引号的。另外,编辑SQL命令,我希望的是能插入传入的参数,可选择编辑SQL语句,貌似找不到传入的参数名称了。总体感觉,这个SQL编辑器使用起来不方便。不知道是不是自己操作有啥问题。




附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

大佬您好,咱们的问题,一个一个解释一下 1、关于SQL拼接,若是文本值如何传入“"”,这个是Excel公式中本身的原理,因为Excel中,字符串文本,本身就需要使用“”,想要在文本内部也使用到双引号,需要双引号做一下转义,和代码中的转义类似,比如\r\n,其中的\就是转义符,r和n是被转义的符号,在比如" "" ",其中最外层的两个双引号,就是字符串的双引号,里面的两个双引号,第一个是转义符号,第二是是被转义的符号,可以参考 ...

16 个回复

倒序浏览
最佳答案
最佳答案
Grayson.Shang活字格认证 Wyn认证
超级版主   /  发表于:2024-8-20 08:33:53
来自 14#
大佬您好,咱们的问题,一个一个解释一下
1、关于SQL拼接,若是文本值如何传入“"”,这个是Excel公式中本身的原理,因为Excel中,字符串文本,本身就需要使用“”,想要在文本内部也使用到双引号,需要双引号做一下转义,和代码中的转义类似,比如\r\n,其中的\就是转义符,r和n是被转义的符号,在比如" "" ",其中最外层的两个双引号,就是字符串的双引号,里面的两个双引号,第一个是转义符号,第二是是被转义的符号,可以参考下面这个帖子
如何在excel中写公式连接字符串时如何生成单引号和双引号_excel 外部引用单引号-CSDN博客

2、select本身是会返回查询结果的,而delete不会返回数据,其实在数据库查询中,delete本身就不会返回数据,当然这个可能和数据也有关系,下面是我测试的MySQL结果,这个信息并不是返回值,而是SQL执行日志信息。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1满意度 +5 收起 理由
Mr.Hu + 5

查看全部评分

回复 使用道具 举报
Mr.Hu
金牌服务用户   /  发表于:2024-8-20 08:56:12
2#
尝试在SQL命令里,重新设置下传入的参数,在SQL编辑器里倒是可以选到参数了,可还是报错。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Mr.Hu
金牌服务用户   /  发表于:2024-8-20 09:04:09
3#

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Mr.Hu
金牌服务用户   /  发表于:2024-8-20 09:05:38
4#

把数据表名改成固定的,只传入后面的删除条件,这样才行。这样有个问题,就是不能动态操作不同数据表。
回复 使用道具 举报
Mr.Hu
金牌服务用户   /  发表于:2024-8-20 09:12:34
5#
问题的关键是数据表名如何去掉引号,没看到哪里能设置字符串是否需要引号的配置。
回复 使用道具 举报
静W_01
初级会员   /  发表于:2024-8-20 09:16:34
6#
delete 语句中,数据表名不能使用参数传入,那样会有sql注入的风险。
不仅内建表不行,外联表也不能直接在delete中直接使用参数作为表名动态传入。
这应该不是活字格的限制,数据库不允许这样使用。

评分

参与人数 2金币 +66 满意度 +4 收起 理由
Grayson.Shang + 66
Mr.Hu + 4

查看全部评分

回复 使用道具 举报
Mr.Hu
金牌服务用户   /  发表于:2024-8-20 09:19:07
7#
这跟数据库限制没有关系吧,现在只是在**配置SQL字符串,拼接完成后才传入到数据库执行的。
回复 使用道具 举报
Grayson.Shang活字格认证 Wyn认证
超级版主   /  发表于:2024-8-20 09:24:57
8#
大佬您好,执行SQL命令中,数据表名字段名 都是只能是固定的值,不能是动态的,想要生成动态的,需要使用其他的命令动态构建SQL。


我简单举一个例子:
1、咱服务端命令中设置好动态的参数


2、使用设置变量命令动态的拼接好SQL

  1. ="SELECT * FROM "&数据表名&" WHERE "&字段名&" = """&值&""""
复制代码
Tip:若是多字段,需要循环多个字段,然后再拼接到SQL后面

3、执行SQL命令,使用前面拼接好的SQL


测试:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Mr.Hu
金牌服务用户   /  发表于:2024-8-20 10:44:36
9#
好的,尚工,下午我试下,感觉这个就是我要的,非常感谢。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部