ASP.Net C # CreateParameter с пустой строкой - PullRequest
3 голосов
/ 11 марта 2011

В моем веб-проекте ASP.net C # у меня есть объект команды запроса, который имеет параметры. Я использую следующий код для заполнения параметров:

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 в качестве поставщика.

Ответы [ 3 ]

3 голосов
/ 11 марта 2011

Если вы хотите вставить пустую строку, вы должны разрешить значения NULL.В противном случае Oracle молча преобразует пустую строку в NULL, и вы получите исключение.

Другой вариант - вставить пустую строку с пробелом ' ', но я думаю, что это будет проблемой.

Вот дополнительная информация о том, почему Oracle делает это (нестандартным) способом: Почему Oracle 9i обрабатывает пустую строку как NULL?

0 голосов
/ 11 марта 2011

1001 * попробовать *

param.Value = string.IsNullOrEmpty(value) ? DBNull.Value : value;
0 голосов
/ 11 марта 2011

Если значение равно нулю, установите param.Value = DBNull.Value, а не устанавливайте его равным нулю:

if (value == null)
{
    param.Value = DBNull.Value;
}
else
{
    param.Value = value;
}
...