Member 12723543 Ответов: 1

Как прочитать определенный столбец в таблице из SQL sever с помощью VB.NET


Я хочу прочитать конкретную колонку . это мой код. Он считывает мой столбец Afternountime-In из Table_DTR, есть ли в нем данные, но продолжает отображать "имеет строки", даже если в нем ничего нет . как я могу это исправить ?

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

Connect = New SqlConnection(ConnectionString)
       Connect.Open()

       Dim Query1 As String = "Select  [AfternoonTime-Out] From Table_DTR Where Date = @Date and EmployeeID = @EmpID "
       Dim cmd1 As SqlCommand = New SqlCommand(Query1, Connect)
       cmd1.Parameters.AddWithValue("@Date", DTRform.datetoday.Text)
       cmd1.Parameters.AddWithValue("@EmpID", DTRform.DTRempID.Text)


       Using Reader As SqlDataReader = cmd1.ExecuteReader()
           If Reader.HasRows Then
               MsgBox("Has rows")
               Reader.Close()

           Else
               MsgBox("empty")
           End If
       End Using

[no name]

Вы ставите точку останова в своей функции, проходите через нее и видите, что читатель имеет на пути данных. Мы понятия не имеем, что у вас в базе данных.

Member 12723543

как мне это сделать ?

1 Ответов

Рейтинг:
10

Wendelius

Если свойство HasRows возвращает true, то результирующий набор, скорее всего, действительно содержит строки. Однако изначально вы не располагаетесь в первой строке, поэтому, если вы попытаетесь извлечь значения, вы получите исключение.

Используйте Метод чтения [^] чтобы продвинуться в результирующем наборе и посмотреть, что он содержит.

Чтобы прояснить ситуацию, это может быть полезно, если вы включите столбцы дата и emplyoeeid в результирующем наборе.

Также обратите внимание, что поскольку дата является зарезервированным словом, имя столбца должно быть заключено в скобки: .. WHERE [Date] = ...

И еще одно. Результирующий набор будет содержать строки до тех пор, пока выполняется условие WHERE, независимо от того, является ли столбец Afternountime-Out значением или нет. Вы можете увидеть, содержит ли столбец нулевое значение, сравнив его с Значение dbnull.Ценность [^] в C#. Если вы хотите исключить нулевые строки, вам необходимо изменить предложение WHERE, например:

Dim Query1 As String = "Select  [AfternoonTime-Out] From Table_DTR Where Date = @Date and EmployeeID = @EmpID AND [AfternoonTime-Out] IS NOT NULL"


Member 12723543

каков наиболее возможный способ ее достижения ? Я понятия не имею .

Wendelius

Чего вы хотите достичь?

Если вы просто хотите исключить нулевые записи из результирующего набора, Добавьте IS NOT NULL условие к предложению where.