Были похожие вопросы, но ответы были не те, что я искал. Я хочу вставить значение NULL в базу данных SQL Server, если ссылка имеет значение NULL или значение еще не было назначено. На данный момент я тестирую на ноль, и это выглядит как
String testString = null;
if (testString == null)
{
command.Parameters.AddParameter(new SqlParameter("@column", DBNull.Value);
}
else
{
command.Parameters.AddParameter(new SqlParameter("@column", testString);
}
Это выглядит и кажется мне невероятно неуклюжим. У меня есть довольно много значений, которые я вставляю в базу данных, и проверить их все, как указано выше, очень многословно. Разве .Net не справляется с этим каким-либо образом. Я подумал, может быть, если бы я использовал строку в отличие от String, но это также не работает. Оглядываясь вокруг, я нашел статьи, в которых говорится об использовании типов Nullable.
System.Nullable<T> variable
Это похоже на примитивы, int ?, char? удваивать? и бул? Так что это может работать для тех, но как насчет строк? Я что-то здесь упускаю? Какие типы я должен использовать для примитивных значений и строковых значений, чтобы мне не приходилось повторно проверять значения перед их вставкой.
EDIT:
Прежде чем я получу слишком много ответов о троичных операторах. Мне они нравятся, но не в этом контексте. Мне не имеет смысла проверять это значение и иметь всю эту дополнительную логику, когда такого рода вещи могли бы быть реализованы ниже в платформе .Net, и если бы я знал, какие типы давать, он бы получил это бесплатно.
Edit:
Хорошо, ребята, помогите мне сформулировать мой план атаки. Я буду использовать Nullable для моих примитивов (int ?, double? И т.д.), а для моих строк я буду использовать String, но ?? тестовое задание. Это делает вещи менее многословными. Есть ли что-то, чего мне здесь не хватает, например, может быть, я теряю некоторую семантику?