【发布时间】:2013-07-16 17:06:45
【问题描述】:
我有一个SqlDataSource,我想用它来更新。我将使用两个类似的更新命令,我想知道如何在一个SqlDataSource 中做到这一点。我知道如何执行“正常”参数,但我想知道如何更改 what 正在更新以及 如何 它正在更新。这是我的陈述,我会将它们放入SqlDataSource:
UPDATE Part SET checkbox02 = @val WHERE partnum = @partnum
UPDATE Part SET checkbox03 = @val WHERE partnum = @partnum
但是,每个SqlDataSource 只能有一个UpdateCommand。
是否可以这样做:
UPDATE Part SET @checkbox = @val WHERE partnum = @partnum
我可以在哪里更改@checkbox 并根据我将参数设置为什么来更新checkbox02 或checkbox03? @checkbox 的确定将在代码隐藏中进行。
如果这不可能,那么最大限度地减少代码/内存使用的最佳选择是什么?
编辑 正如下面的 cmets 所述,我在上述问题中的原始想法是不可能的。因此,我对我的问题有以下补充(也在 cmets 中,为了可见性而移到此处):
我可以这样做吗:
UpdateCommand="UPDATE Part SET checkbox02 = @val02, checkbox03 = @val03 WHERE partnum = @partnum"
然后将我不想更改的参数设置为适当的列名?比如说我这次不想改checkbox02,所以我把@val02参数设置为checkbox02
【问题讨论】:
-
您可能必须摆脱 SqlDataSource,然后通过 ADO.NET(SQLCommand、SQLConnection 等)在代码隐藏中使用 SQL 查询。
-
您不能轻松地在 SQL 语句中对表和/或列名称进行参数化。如果你想这样做,你需要使用 dynamic SQL(将你的 SQL 语句构建为一个字符串并执行它)——带有关于 SQL 注入攻击和 all$
-
这似乎行不通。我可以这样做:拥有
UpdateCommand="UPDATE Part SET checkbox02 = @val02, checkbox03 = @val03 WHERE partnum = @partnum",然后将我不想更改的参数设置为适当的列名?比如说我这次不想改chekcbox02,所以我把@val02参数设置为checkbox02。 -
@wlyles 是的,可以。
-
@jadarnel27 实际上不起作用。我试过了,但它不会将
checkbox02转换为数据类型tinyint(复选框数据类型)
标签: c# asp.net parameters sqldatasource