3

私の ASP.net C# Web プロジェクトには、パラメーターを持つクエリ コマンド オブジェクトがあります。次のコードを使用してパラメーターを入力します。

DbCommand command = conn.CreateCommand();
command.CommandText = query; 
DbParameter param = command.CreateParameter();
param.ParameterName = parameter;
param.DbType = DbType.String;
param.Value = value;

このコードは、空の文字列を除くすべての文字列に対して機能します。入力フィールドを空白のままにすると、値が "" として渡されます。これが発生した場合、次の例外が発生します。

ORA-01400: cannot insert NULL into (string)

データベースに空白文字列を挿入する方法はありますか?

私は Oracle データベースを使用しており、プロバイダーとして System.Data.OracleClient を使用しています。

4

3 に答える 3

3

空の文字列を挿入する場合は、NULL 値を許可する必要があります。そうしないと、Oracle は空の文字列をサイレントに NULL に変換し、例外が発生します。

別のオプションは、スペースを含む空の文字列を挿入すること' 'ですが、それは面倒だと思います。

Oracle がこの (非標準) 方法を行う理由についての詳細は、次のとおり です。 Oracle 9i が空の文字列を NULL として扱うのはなぜですか?

于 2011-03-10T21:20:41.050 に答える
0

値が null の場合は、null に設定するのではなく、param.Value = DBNull.Value に設定します。

if (value == null)
{
    param.Value = DBNull.Value;
}
else
{
    param.Value = value;
}
于 2011-03-10T21:20:26.673 に答える
0

試す

param.Value = string.IsNullOrEmpty(value) ? DBNull.Value : value;
于 2011-03-10T21:20:50.570 に答える