3

コンボボックスで何も選択されていないときにNULLを挿入しようとしましたが、これを行うと:

prikaz.Parameters.AddWithValue("@odjezd", cb_odjezd.Text == string.Empty ?
                                               null : cb_odjezd.Text);

次の例外が発生します。

パラメータ化されたクエリは、パラメータ @ odjezd を想定しています

誰かがこれを解決するのを手伝ってくれますか?

4

5 に答える 5

8

代わりにDbNull.Value値を使用してみてください。

だからそれはなる

prikaz.Parameters.AddWithValue("@odjezd", 
         string.IsNullOrEmpty(cb_odjezd.Text) ? DbNull.Value : cb_odjezd.Text);

編集

ここで受け入れられた 回答に基づいて、あなたの場合はそれで十分なはずです(object)DBNull.Value

問題は、C#がここでの条件で同じ型の値を想定しているが、あるケースDbNull.Valueでは別のstring. したがって、オブジェクトへのキャストDbNull.Valueはそのルールを「通過」させます。

于 2013-09-10T06:46:17.420 に答える
2

DBNull を使用

prikaz.Parameters.AddWithValue("@odjezd", cb_odjezd.Text == string.Empty ? DBNull.value : cb_odjezd.Text);

これを使ってみてください:

if (cb_odjezd.Text== string.Empty)
{
    prikaz.Parameters.AddWithValue("@odjezd", DBNull.Value);
}
else
{
    prikaz.Parameters.AddWithValue("@odjezd", cb_odjezd.Text);
}

キーワード null は、無効な参照を表します。クラス System.DbNull は、データベース フィールドに存在しない値を表します。

于 2013-09-10T06:45:03.970 に答える