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

本文关键字:插入 一个 我们 SqlCeCommand Parameters AddWithValue 为什么 | 更新日期: 2023-09-27 17:49:18

我有一个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执行插入,那么这是什么参数。AddWithValue呢?

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

@num为TSQL参数。没有AddWithValue(@num, num),既没有定义也没有赋值。它根本不会与省略的参数工作,即使它做:它会从哪里得到你选择的值(num) ?绝对的最好的它可以做的是使用null,这不是你的意图;更典型的是,它只是执行失败(你确定你没有在某处吞下一个异常吗?)。

注意,不建议将值连接到字符串本身;它将导致SQL注入风险,并可能降低性能(计划重用;但我不确定这是否适用于CE——CE很可能不会为缓存计划而烦恼)。

相关文章: