Member 12671834 Ответов: 4

Введите нулевое значение, если текстовое поле пусто


Я пробовал разные методы, чтобы сделать это, но ни один не работает:

<pre lang="c#">
string strListOthLog = ((TextBox)fvAddBookingInfo.FindControl("txtOtherLogList")).Text;
string strComment = ((TextBox)fvAddBookingInfo.FindControl("txtComment")).Text;
.......
 cmd.Parameters.Add("@other_logon_list", SqlDbType.NVarChar).Value = string.IsNullOrEmpty(strListOthLog) ? (object)DBNull.Value : strListOthLog;
   
if (string.IsNullOrEmpty(strComment))
            {
                cmd.Parameters.Add("@additional_comments", SqlDbType.NVarChar).Value = System.DBNull.Value;
            }
            else
            {
                cmd.Parameters.Add("@additional_comments", SqlDbType.NVarChar).Value = strComment;
            }


Что я уже пробовал:

Система.Значение dbnull.Ценность по-разному.

Maciej Los

"Не работает" - это совсем не информативно!
В чем твоя проблема? Что не так с вышеприведенным кодом? Какую ошибку вы получаете?

Member 12671834

Я не получаю никакой ошибки, но он не вводит null в базу данных, он вводит пустой.

Karthik_Mahalingam

попробуйте передать значение 'null'

Maciej Los

Принимает ли база данных null значения для этого поля? Зачем добавлять комментарий, если его Коннот есть null?!? Нелогично...

Bernhard Hiller

Как вы видите, что он "пустой", а не"нулевой"? Что такое ваш редактор / зритель?

Member 12671834

Это то, что я пытаюсь сделать, но это ввод пустого, а не нулевого значения. Не могли бы вы сообщить мне, что не так в моем коде или как передать нулевое значение?
Спасибо,

4 Ответов

Рейтинг:
2

Karthik_Mahalingam

использовать null вместо DBNull.Value

cmd.Parameters.Add("@other_logon_list", SqlDbType.NVarChar).Value = string.IsNullOrWhiteSpace(strListOthLog) ? null : strListOthLog;
cmd.Parameters.Add("@additional_comments", SqlDbType.NVarChar).Value = string.IsNullOrWhiteSpace(strComment) ? null : strComment;


Значение dbnull.Ценность:
Значение dbnull.Значение предназначено для работы с базами данных. Столбец базы данных может содержать нулевое значение. Однако, когда эти данные выбираются в объект (например, DataTable) в коде, там есть объект, на который можно ссылаться, насколько это касается кода. Однако этот объект содержит представление нулевого значения из базы данных. Таким Образом, DBNull.Ценность существует для того, чтобы представлять это различие. Это в основном означает: "здесь есть объект C#, который захватил значение из базы данных, но это значение равно null."


относиться null против DBNull.Ценность[^]


ZurdoDev

"Значение dbnull.Значение предназначено для работы с базами данных." - Значение dbnull.Значение подходит для SqlCommand.

Рейтинг:
2

ZurdoDev

Этот код будет работать

if (strListOthLog == "")
  cmd.Parameters.AddWithValue("@other_logon_list", DBNull.Value);
else
  cmd.Parameters.AddWithValue("@other_logon_list", strListOthLog);


Maciej Los

Что ж...
Конечно, это тоже должно сработать, но - на мой взгляд - это не решает проблему ОП. Пожалуйста, прочтите мой комментарий к комментарию ОП. Может быть, я ошибаюсь, но есть ли смысл вставлять бесполезные данные в базу данных? ;)

ZurdoDev

Я не понимаю вашего комментария.

Member 12671834

@RyanDev: я пытался, но это не сработало. Спасибо за попытку помочь.

ZurdoDev

Это действительно работает, поэтому, пожалуйста, объясните, что вы подразумеваете под "это не сработало"."

Рейтинг:
1

Member 12671834

Я благодарю вас всех за помощь. Я перепробовал все вышеперечисленные способы по одному и не добился успеха, введя нулевое значение вместо пустого пустого места в таблице. Наконец я добился того, что это сработало, выполнив следующее:
В хранимой процедуре я устанавливаю значение по умолчанию null для полей, которые не являются обязательными (пользователь может не вводить значение).
@additional_comments varchar (500) = null
Затем в событии lbInsert_Click у меня есть следующее:
string strComment = ((TextBox)fvAddBookingInfo.FindControl ("txtComment")). Text;
....
if (strComment != String.Пустой)
{
cmd. Parameters.Add("@additional_comments", SqlDbType.VarChar).Значение = strComment;
}
Это работает на меня.
Еще раз спасибо всем вам за Вашу поддержку.


Рейтинг:
0

manishbg

изменения в БД в столбец принимает значение null также.

если (txtval=="")
{
вал=" ";

}
ещё
{
Валь=txtval;

}