2011-04-08 38 views
1

我有一個使用SQL Compact 3.5作爲嵌入式數據庫的C#WPF桌面應用程序。 在插入功能有爲什麼我們需要SqlCeCommand.Parameters.AddWithValue()來插入一個值?

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

我沒有得到什麼com.Parameters.AddWithValue()左右。我註釋掉了這行代碼和插入函數運行完全一樣。我以爲ExecuteNonQuery執行插入,那麼這是什麼參數.AddWithValue的東西?

回答

1

@num是一個TSQL參數。沒有AddWithValue(@num, num)這既沒有定義也沒有賦值。它不會與參數省略,即使它做到了:它會從哪裏得到您選擇的值(num)?絕對的最好的它可以做的是使用null這不是你的意圖;更典型的是它只會執行失敗(你確定你沒有吞下異常嗎?)。

請注意,不建議將值連接到字符串本身;它會導致SQL注入風險,並可能降低性能(計劃重用;不確定這適用於CE雖然 - CE可能不會打擾緩存計劃)。