12

pコレクションにSQLパラメーターを追加するInvalidCastExceptionと、投稿タイトルからのメッセージが表示されます。

parentIdデータベース内のnull許容整数およびnull許容整数です。

なぜこの例外が発生し、どうすれば解決できますか?

私はストアドプロシージャを使用せず、同様のスレッドを読みましたが、役に立ちませんでした。

var p = new SqlParameter("ParentId", SqlDbType.Int).Value = parentId ?? (object) DBNull.Value;
cmd.Parameters.Add(p);  
4

2 に答える 2

18

を追加していませんnew SqlParameterpの結果ですnew SqlParameter("ParentId", SqlDbType.Int).Value = parentId ?? (object) DBNull.Value。言い換えれば、pそれ自体はDBNull.Valueです。

次のように、ステートメントを2つに分割します。

var p = new SqlParameter("ParentId", SqlDbType.Int);
p.Value = parentId ?? (object) DBNull.Value;
cmd.Parameters.Add(p);

または、

var p = new SqlParameter("ParentId", SqlDbType.Int) { Value = parentId ?? (object) DBNull.Value };
cmd.Parameters.Add(p);

pどちらも、パラメータの値ではなく、パラメータであることを確認します。

于 2012-11-30T21:41:58.353 に答える
-2

使用する必要があります:

System.Data.SqlTypes.SqlInt32.Null
于 2012-11-30T21:42:30.053 に答える