Foxtable(狐表)用户栏目专家坐堂 → SQL command 如何参数化 表达式


  共有3955人关注过本帖树形打印复制链接

主题:SQL command 如何参数化 表达式

帅哥哟,离线,有人找我吗?
qq252476275
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:196 积分:1429 威望:0 精华:0 注册:2020/5/23 14:56:00
SQL command 如何参数化 表达式  发帖心情 Post By:2021/8/18 17:09:00 [只看该作者]

使用sqlCommand, 
如何 cmd.Parameters.Add(@金额, '0.9 * 字段1 - 字段2')


0.9 * 字段1 - 字段2 这是动态写入的, 实际会当做字符串写, 本身 金额是float, 所以写不成功。


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/8/18 17:23:00 [只看该作者]

不支持的,只能使用拼sql的方式

 回到顶部
帅哥哟,离线,有人找我吗?
qq252476275
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:196 积分:1429 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By:2021/8/18 17:27:00 [只看该作者]

问题是公式是变化动态的

 回到顶部
帅哥哟,离线,有人找我吗?
qq252476275
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:196 积分:1429 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By:2021/8/18 17:29:00 [只看该作者]


公式不是固定不变,可以用sql语句拼接


是动态的,根据客户端传来的数据,组合的


sql 拼接 , 如何 不加 单引号呢?

如以下:sql 语句
Up date xzgsTechTray Set [制作工时] = '0.09*数量*单重',[安装工时] = '形规1/1000*7.5*数量',[修改者] = 'admin',[修改时间] = '2021-08-18 17:10:50' where [_identify] = 172


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/8/18 17:32:00 [只看该作者]

l列名本来就不需要使用单引号呀,字符串才需要

Up date xzgsTechTray Set [制作工时] = 0.09*数量*单重,

 回到顶部
帅哥哟,离线,有人找我吗?
qq252476275
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:196 积分:1429 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By:2021/8/18 17:38:00 [只看该作者]

是的, =后面的字符串是从客户端传过来的, 这个值是变化的, 可能是 0.09*数量*单重, 也可能是  形规1/1000*7.5*数量, 也可能是其他

在后台拼接时,因为是字符串,所以加了单引号, 就不正确了 

或者使用 

declare  @sql  来拼接?
exec @sql 

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/8/19 8:36:00 [只看该作者]

dim s as string = "0.09*数量*单重"

dim sql as string = "Up date xzgsTechTray Set [制作工时] = " & s & ",[安装工时] ="

 回到顶部
帅哥哟,离线,有人找我吗?
qq252476275
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:196 积分:1429 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By:2021/8/19 8:43:00 [只看该作者]

理解了, 谢谢!

' 判断是否是表达式
                            ' output.show( "jpName:" & jp.name.ToString )                            
                            Dim bExpression As Boolean = False
                            If strFieldType <> "" Then
                                For Each xx As JProperty In arrFieldType(i)
                                    'output.show( "xxName:" & xx.name.ToString )
                                    
                                    If jp.name.ToString = xx.name.ToString Then
                                        'output.show("xxValue:" & xx.value.ToString)
                                        If xx.value.ToString = "expression" Then
                                            bExpression = True
                                        End If
                                        Exit For
                                    End If
                                Next
                            End If
                            'output.show(bExpression )
                            If bExpression Then   ' 是表达式,则无单引号
                                strValue = strValue & "[" & jp.name.ToString & "] = " & jp.value.ToString.Replace("'","''") & ","                                
                            Else   ' 不是,则为字符串, 有单引号
                                strValue = strValue & "[" & jp.name.ToString & "] = '" & jp.value.ToString.Replace("'","''") & "',"
                            End If


 回到顶部