I ожидаю вы имеете в виду второе, где вы SELECT *
но ExecuteScalar
;ExecuteScalar
возвращает только одно значение (как результат) - и оно не обновляет читателя, поэтому Literal17
/ Literal18
получают свои значения из ниоткуда.
Следуя существующему шаблону, он долженбыть что-то вроде:
' caveat: this is **not** intended as a perfect example; this intentionally
' uses the same pattern as the question; see below for notes
dtrReader = cmd.ExecuteReader()
If dtrReader.Read()
Literal17.Text = dtrReader("travels")
Literal18.Text = dtrReader("Contactno")
End If
что более важно, хотя
- без разделения;все от управления строкой соединения, учетных данных (спасибо за это, кстати), доступа к данным и пользовательскому интерфейсу обрабатывается прямо в
Page_Load
событии, сам причина сильного скрежета зубов - подвержен SQL-инъекции
- нет
using
(или эквивалент VB), чтобы гарантировать детерминированную очистку, а не ожидание при сборке мусора (в неизбежном событии исключений)