【问题标题】:pass selected dropdownlist value to where clause将选定的下拉列表值传递给 where 子句
【发布时间】:2011-11-04 18:33:41
【问题描述】:

我正在使用 newxt 查询插入到表中,但我不知道告诉查询我需要插入 where training_id = &dateSelected& 的语法是什么,下面的查询通过使用静态值来测试 (2) .

请帮忙。

private void InsertInfo()
    {
        var dateSelected = dpDate.SelectedItem.Value;
        SqlConnection conn = new SqlConnection(GetConnectionString());

    string sql =    "INSERT INTO personTraining (name,training_id, training,trainingDate,trainingHour, trainingSession)SELECT @Val1,training_id,training,trainingDate,trainingHour,trainingSession FROM tbl_training WHERE  training_id = 2";

【问题讨论】:

  • 如果你扩展你的代码来展示SQL语句是如何执行的,以及@Val1是如何使用的,我们可以提供更具体的例子。

标签: c# asp.net sql-server tsql parameters


【解决方案1】:

使用参数如下:

private void InsertInfo()
{
  var dateSelected = dpDate.SelectedItem.Value;
  using(SqlConnection conn = new SqlConnection(GetConnectionString()))
  {
       conn.Open();
       SqlCommand command= conn.CreateCommand();
       command.CommandText=     "INSERT INTO personTraining (name,training_id, training,trainingDate,trainingHour, trainingSession)SELECT @Val1,training_id,training,trainingDate,trainingHour,trainingSession FROM tbl_training WHERE  training_id = @trainingID";

      command.Parameters.AddWithValue("@trainingID",dateSelected);
      command.ExecuteNonQuery();
}

但是,您的查询中有另一个 @Val1 参数;我不知道这是从哪里来的。

【讨论】:

  • 感谢它认为我明白了,所以我们不能再在 .net 中使用 '&' 符号了?
  • @user959443:您可以在 VB.NET 中使用它们来连接字符串,但在构建 SQL 查询时这是一种糟糕的做法。不要永远那样做,因为你会让自己暴露在 SQL 注入攻击之下。
【解决方案2】:

这是一个基本示例。我不知道您是如何执行 string sql 的,所以我将使用基于 SqlCommand 的示例。

SQL:

INSERT INTO personTraining 
(name,training_id, training,trainingDate,trainingHour, trainingSession)
SELECT @Val1,training_id,training,trainingDate,trainingHour,trainingSession
FROM tbl_training 
WHERE training_id = @training_id;

C#:

SqlCommand cmd = conn.CreateCommand();
cmd.Parameters.AddWithValue("training_id", dateSelected);

【讨论】:

    【解决方案3】:

    将另一个Parameter对象添加到SqlCommand对象,并将Parameter的值设置为dateSelected。

    【讨论】:

    • 嗨,我需要为 where 子句而不是值传递选定的 id,我该怎么做? 选择日期:ListItem>
    • 你可以把参数放在任何地方。
    猜你喜欢
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多