为什么我们需要SqlCeCommand.Parameters.AddWithValue()来插入一个值?

时间:2011-04-08 08:41:51

标签: c# wpf sql-server-ce

我有一个C#WPF桌面应用程序,它使用SQL Compact 3.5作为其嵌入式数据库。 在插入功能中它有

using (SqlCeCommand com = new SqlCeCommand(
    "INSERT INTO FooTable VALUES(@num)", con))
{
    com.Parameters.AddWithValue("@num", num);
    com.ExecuteNonQuery();
}

我没有得到com.Parameters.AddWithValue()的内容。我注释掉了这行代码,插入函数运行完全相同。我以为ExecuteNonQuery执行插入,那么这个Parameters.AddWithValue是什么东西?

1 个答案:

答案 0 :(得分:1)

@num是TSQL参数。如果没有AddWithValue(@num, num),则既未定义也未赋值。它只是不能使用省略的参数,即使它确实:它会从哪里得到你选择的值(num)?它可以做的绝对 最佳 是使用null,这不是你的意图;更典型的是它根本无法执行(你确定你不会在某个地方吞下异常吗?)。

请注意,不建议将值连接到字符串本身;它会导致SQL注入风险,并且可能会降低性能(计划重用;不确定这适用于CE - CE可能不会对缓存计划感到烦恼)。