Если у вас был какой-то код, который извлек запись, и некоторые значения в строке могли бы быть нулевыми:
Public Sub ReadMyData(ByVal connectionString As String)
Dim queryString As String = "SELECT FirstNameColumn FROM tableNames WHERE LastNameColumn = 'Smith'"
Using connection As New OleDbConnection(connectionString)
Dim command As New OleDbCommand(queryString, connection)
connection.Open()
Dim reader As OleDbDataReader = command.ExecuteReader()
While reader.Read()
If Not reader.IsDbNull(0) Then
Console.WriteLine(reader.GetString(0))
End If
End While
reader.Close()
End Using
End Sub
DataReader имеет метод IsDBNull, который сообщит вам, есть ли ячейка в строке нулевой.
Действительно, использование DataReader - это действительно низкий уровень и довольно тяжелая работа. Есть много более простых способов использовать базу данных. Следующим шагом в разумных пределах может быть Dataadapter и datatable, предлагающий аналогичную функцию:
Dim da as New OleDbDataAdapter("SELECT FirstNameColumn FROM tableNames WHERE LastNameColumn = 'Smith'", connStr)
DataTable dt = new DataTable()
custDA.Fill(dt)
For Each ro as DataRow in dt.Rows
If Not ro.IsNull("FirstNameColumn") Then
Console.WriteLine(ro("FirstNameColumn"))
End If
Next ro
TableAdapters другой уровень абстракции, удаляет все ужасные обращения с именами строковых столбцов, среди прочего:
Dim ta as New PersonTableAdapter
Dim dt as PersonDataTable = ta.GetData()
For Each ro in dt
If Not ro.IsFirstNameColumnNull() Then
Console.WriteLine(ro.FirstNameColumn)
End If
Next ro
Entity Framework, вероятно, эквивалентно высокого уровня, возможно, выше:
Dim p as Person = context.Person.Where(Function(x) x.LastName = "Smith")
If p.FirstNameColumn Is Not Nothing Then
Console.WriteLine(p.FirstNameColumn)
End If