我有一个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是什么东西?
答案 0 :(得分:1)
@num
是TSQL参数。如果没有AddWithValue(@num, num)
,则既未定义也未赋值。它只是不能使用省略的参数,即使它确实:它会从哪里得到你选择的值(num
)?它可以做的绝对 最佳 是使用null
,这不是你的意图;更典型的是它根本无法执行(你确定你不会在某个地方吞下异常吗?)。
请注意,不建议将值连接到字符串本身;它会导致SQL注入风险,并且可能会降低性能(计划重用;不确定这适用于CE - CE可能不会对缓存计划感到烦恼)。