【问题标题】:SQL parameters not workingSQL 参数不起作用
【发布时间】:2017-10-19 07:22:10
【问题描述】:

这是我现在正在使用的代码,我没有收到任何错误,所以我无法确定它不工作的地方:

private void btnAdd_Click(object sender, EventArgs e)
{
    string constring = $"Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=" +
                       Directory.GetCurrentDirectory().ToString() + "\\BarcodeDB.mdf;Integrated Security=True";
    string query =
       "INSERT INTO Products (Barcodes, Name, EDate, Quantity, Price) VALUES (@barcodeValue, @nameValue, @dateValue, @quantityValue, @priceValue) ;";
    SqlConnection conDataBase = new SqlConnection(constring);
    conDataBase.Open();
    using (var cmd = new SqlCommand(query, conDataBase))        
    {
        cmd.Parameters.AddWithValue("@barcodeValue", tbxBar.Text);
        cmd.Parameters.AddWithValue("@nameValue", tbxName.Text);
        cmd.Parameters.AddWithValue("@dateValue", dateDate.Value.Date);
        cmd.Parameters.AddWithValue("@quantityeValue", tbxQua.Text);
        cmd.Parameters.AddWithValue("@priceValue", tbxPrice.Text);
    }   
    conDataBase.Close();
}

代码可能只是构建错误,或者我可能遗漏了一些我不确定的部分。

我发现什么不起作用,是连接字符串。因此,为此提出一个新问题。

我要做的就是打开连接,然后执行命令

【问题讨论】:

  • 你的代码没有运行命令!
  • 在执行cmd.ExecuteNonQuery() 时,参数化查询可最大限度地减少 SQL 注入 - 当在查询字符串中使用连接值时,通常会发生注入。你到底想做什么?
  • 尝试执行你的命令,也许会发生什么?
  • 你可以很好地形成命令,但永远不要执行它。
  • 为什么这个问题被标记为sql注入?

标签: c# sql sqlparameter


【解决方案1】:

您实际上并没有运行该命令。您需要拨打ExecuteNonQueryExecuteScalar

using (var cmd = new SqlCommand(query, conDataBase))        
{
    // set parameters...

    cmd.ExecuteNonQuery();
}

【讨论】:

  • 我添加了这个,我说我必须打开连接所以我做了,现在它运行没有做任何事情添加新代码来提问
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
  • 2011-12-12
  • 1970-01-01
  • 2013-12-19
  • 2012-11-18
相关资源
最近更新 更多