以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- SQL command 如何参数化 表达式 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=171121) |
-- 作者:qq252476275 -- 发布时间:2021/8/18 17:09:00 -- SQL command 如何参数化 表达式 使用sqlCommand, 如何 cmd.Parameters.Add(@金额, \'0.9 * 字段1 - 字段2\') 0.9 * 字段1 - 字段2 这是动态写入的, 实际会当做字符串写, 本身 金额是float, 所以写不成功。 |
-- 作者:有点蓝 -- 发布时间:2021/8/18 17:23:00 -- 不支持的,只能使用拼sql的方式 |
-- 作者:qq252476275 -- 发布时间:2021/8/18 17:27:00 -- 问题是公式是变化动态的 |
-- 作者:qq252476275 -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间:2021/8/18 17:32:00 -- l列名本来就不需要使用单引号呀,字符串才需要 |
-- 作者:qq252476275 -- 发布时间:2021/8/18 17:38:00 -- 是的, =后面的字符串是从客户端传过来的, 这个值是变化的, 可能是 0.09*数量*单重, 也可能是 形规1/1000*7.5*数量, 也可能是其他 在后台拼接时,因为是字符串,所以加了单引号, 就不正确了 或者使用 declare @sql 来拼接? exec @sql
|
-- 作者:有点蓝 -- 发布时间:2021/8/19 8:36:00 -- dim s as string = "0.09*数量*单重" dim sql as string = "Up date xzgsTechTray Set [制作工时] = " & s & ",[安装工时] ="
|
-- 作者:qq252476275 -- 发布时间: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 |