Как проверить, если это ноль? - PullRequest
0 голосов
/ 21 сентября 2009

Я получаю данные из базы данных, как показано ниже. Как проверить, является ли значение, полученное из базы данных, нулевым?

Private Function GetBatch() As DataSet
        Dim dataset As New DataSet
        Dim adapter As Data.SqlClient.SqlDataAdapter
        Dim cn As New System.Data.SqlClient.SqlConnection(connectionstring())
        GetBatchCommand.Connection = cn
        adapter = New Data.SqlClient.SqlDataAdapter(GetBatchCommand)
        adapter.Fill(dataset)
        Return dataset
End Function

Dim dataset As New DataSet
            dataset = GetBatch()

With dataset.Tables(0)

Dim PersonID As String = .Rows(int).Item("personId")

Я бы хотел проверить, имеет ли personID значение NULL. Как это сделать?

Ответы [ 5 ]

6 голосов
/ 21 сентября 2009

Попробуйте Метод IsNull DataRow , чтобы проверить нулевые значения:

Dim isPersonIDNull As Boolean = .Rows(0).IsNull("personId")

Или используйте IsDBNull метод :

Dim isPersonIDNull As Boolean = IsDBNull(.Rows(int).Item("personId"))

Или вручную Проверить, равно ли значение DBNull:

Dim isPersonIDNull As Boolean = .Rows(int).Item("personId").Equals(DBNull.Value)
3 голосов
/ 21 сентября 2009
If DBNull.Value.Equal(.Rows(int).Item("personId")) Then
...

DBNull

0 голосов
/ 21 сентября 2009

Такая ситуация может возникнуть, если таблица без строк, в это время ds.Table (0) .Rows (int) .Item ("personId") вернет исключение нулевой ссылки

, поэтому вы должны использовать два условия

Dim PersonID As String =""
if(ds.tables.count>0) Then
 if(ds.tables(0).Rows.Count>0) Then
   if(NOT DBNull.Value.Equal((ds.tables(0).Rows(int).Item("PersonID"))) Then
              PersonID = ds.tables(0).Rows(int).Item("PersonID")

Я думаю, что это решит вашу проблему ... может присутствовать незначительное изменение синтаксиса

0 голосов
/ 21 сентября 2009

Вы должны проверить, является ли значение нулевым, прежде чем назначить его для PersonID

как:

if .Rows(int).Item("personId") = DBNull.Value Then
  ' Assign some Dummy Value
  PersonID = ""
else
  PersonID = .Rows(int).Item("personId") 
end if

Я бы рекомендовал извлечь этот фрагмент кода в вспомогательный метод, который получает либо значение, либо значение по умолчанию для данного столбца.

0 голосов
/ 21 сентября 2009

Вы также можете использовать константу Convert.DbNull .

...