【问题标题】:SqlDataSource updating different fields with one UpdateCommandSqlDataSource 使用一个 UpdateCommand 更新不同的字段
【发布时间】: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 并根据我将参数设置为什么来更新checkbox02checkbox03@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


【解决方案1】:

回去清理我的个人资料 - 这是很久以前的事了...

无论如何,我记得,这里的解决方案是按照 Garrison Neely 在评论中的建议,在 ADO.NET 中使用更自定义的 SQL 查询解决方案。我在这里尝试做的事情对于 SqlDataSource 类是不可行的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    相关资源
    最近更新 更多