0

問題は、私のSQL文が何も返さなかったexecuteScalarにありました

テーブルには、Int32 型の値と、null 許容の datetime 型の値があります。そして、私が望むのは、ユーザーがフィールドに正しくないタイプである ""(空白) の代わりに null 値を挿入するためにテキストボックスに入力しない場合です。

ここに画像の説明を入力

私は次のようなアイデアを試しました:

insertActor.Parameters.AddWithValue("@School2StartYear", String.IsNullOrWhiteSpace(txtSchool2StartYear.Text) ? (object)DBNull.Value : (object)Int16.Parse(txtSchool2StartYear.Text));

15 個のテーブル (30 個以上のフィールド)に対してこれを行う必要があります。

jQueryによる機能も見ました.validate()が、全く試していませんでした。

私はこの考えも見ました:[DisplayFormat(ConvertEmptyStringToNull = true)]

データベースで行う必要がありますか? '' が追加されたら NULL に変換しますか?

それで、これはそれを行うための最良の方法ですか?IsNullOrWhiteSpace の場合、すべてのテキスト ボックスをチェックする

4

3 に答える 3

1

私は通常、パラメータを除外します:

Int16 school2StartYear;
if (Int16.TryParse(txtSchool2StartYear.Text, out school2StartYear) {
    insertActor.Parameters.AddWithValue("@School2StartYear", school2StartYear);
}

@School2StartYear smallint = NULLパラメータが除外されている場合はデフォルトとして使用されるように、SQLコードでパラメータを宣言しNULLます。

于 2012-07-23T06:23:42.387 に答える
1

入力値が正しくないためではなく、ステートメントの結果が null であるため、例外が発生する可能性があります。次のように実行を分割してみてください。

object result = insertActor.ExecuteScalar();
newID = Int32.Parse(result.ToString());

結果が null であると思われるため、ToString メソッドが呼び出されたときに NullReferenceException が発生しています。

新しい ID は、return ステートメント、出力パラメーター、select ステートメントから取得されるはずですか?

于 2012-07-23T06:33:00.127 に答える
0

IsDBNullで確認できます

Convert.IsDBNull (txtSchool2StartYear) ? 0:int.Parse (txtSchool2StartYear);
于 2012-07-23T05:57:15.460 に答える