Здравствуйте, у меня есть этот код, который считывает данные из SQL DB.Использование имени столбца при использовании SqlDataReader.IsDBNull
Я не знаю, как мне его редактировать, поэтому я могу использовать исходное имя столбца, а не индекс столбца.
string query = "SELECT * FROM zajezd WHERE event='" + thisrow+ "' AND year='" + klientClass.Year() + "'";
SqlCommand cmd= new SqlCommand(query, spojeni);
spojeni.Open();
SqlDataReader read= cmd.ExecuteReader();
if (read.Read())
{
maskedTextBox2.Text = read.IsDBNull(24) ?
string.Empty :
read.GetDateTime(24).ToString("MM/dd/yyyy");
Заранее благодарен.
Значит, вы используете SELECT *, а колонка, которой вы являетесь, - это 24-я колонна? Это ужасный способ кодирования - что происходит, когда кто-то меняет таблицу (например, добавляет столбец где-то между 1-23)? Вы можете получить сообщение об ошибке, или, может быть, вы получите другой столбец времени и не заметите. Кроме того, вам нравится SQL-инъекция? Пожалуйста, используйте параметризованные запросы. Динамический SQL, как это, почему в Интернете так много эксплойтов SQL-инъекций каждый день. –
@NathanKoop в вашем редактировании вы добавили закрытие. Возможно, вы правы, но, как вы можете видеть из приведенных ниже комментариев, это дает очень конкретное значение для запроса, используемого OP. Если OP нуждается только в одном столбце, тогда возможен более эффективный подход. – Steve
@Steve извините за задержку ответа. Я не вижу комментариев (-ов), на которые вы ссылаетесь, но я удалил фигурные фигуры. Для меня это не очень важно, если он есть или нет :-) –