2014-02-04 2 views
0
Dim cmd As New SqlCommand("SELECT * FROM enroll WHERE id = '" & idtxt.Text & "'", conn) 
      Dim rdr As SqlDataReader = cmd.ExecuteReader 
      rdr.Read() 
      fnametxt.text = rdr("fname") 
      lnametxt.text = rdr("lname") 
      rdr.close() 

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

+0

Если не rdr.IsDBNull (имя_файла) Тогда \t fnametxt.text = РДР ("имя_файла") End If – Sumant

ответ

0

Использование Convert.IsDBNull(), как этот

If Not Convert.IsDBNull(rdr("fname")) Then 
    fnametxt.text = rdr("fname") 
End If 

Он проверяет, содержит ли поле из базы данных базы данных нулевое значение, которое отличается от значения .NET null.

0

Прежде всего обрабатывать NULL и пустые значения из базы данных, как этот

Dim cmd As New SqlCommand("SELECT NULLIF(fname,''),NULLIF(lname,'') FROM enroll WHERE id = '" & idtxt.Text & "'", conn) 

Теперь он будет возвращать Допустимые значения или нулевые значения, так что вам нужно обрабатывать нулевые значения в коде позади

использовать следующие функции в этом сценарии:

Public Shared Function NoNull(ByVal checkValue As Object, ByVal returnIfNull As Object) As Object 
    If checkValue Is DBNull.Value Then 
     Return returnIfNull 
    Else 
     Return = checkValue 
    End If 
End Function 

Ваш код будет выглядеть примерно так:

Dim rdr As SqlDataReader = cmd.ExecuteReader 
rdr.Read() 
fnametxt.text =NoNull(rdr("fname"),"") 
lnametxt.text =NoNull(rdr("lname"),"") 
rdr.close() 
+0

в этой строке "fnametxt.text = NoNull (РДР (" имя_файла ")," ")" .. это говорит .. IndexOutOfRangeException был необработанным .. когда я запускаю проект .. почему? – user3211476

+0

можете ли вы проверить, имеет ли ваш считыватель данных значения или нет? –

Смежные вопросы