VB.NET
- Verificando se existem dados
Como verificar se a execução de sua consulta a fonte de dados retornou registros ?
Essa é uma operação simples de ser feita , você pode usar :
Vamos mostrar um exemplo onde o código cria e preenche um objeto DataTable e usa a propriedade Count de DataRowCollection para determinar se a consulta usada para cria a tabela retorna dados.
Na sequência um DataReader será criado ; vamos usar a propriedade HasRows e o método Read() para determinar se o comando usado para criar o DataReader retornou linhas ou não
Crie um novo projeto no VS.NET to tipo Windows Application e insira um componente TextBox com propriedade Multiline definida como True e um botão de comando.
Defina os seguintes imports no projeto:
Imports
System.Data.oledb
Imports System.text
Defina a seguinte variável no seu projeto:
Private Const TABELA_ORDER As String = "Orders"
Agora insira o seguinte código do evento Click do botão de comando:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim result As StringBuilder = New StringBuilder Dim strConn As String Dim sql As String sql = "SELECT * FROM Orders" strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\teste\Northwind.mdb" Dim da As OleDBDataAdapter = New OleDBDataAdapter(sql, strConn) Dim tbl As DataTable = New DataTable(TABELA_ORDER) 'preenche o dataadapter Try da.Fill(tbl) Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical) Exit Sub End Try Dim tabelaTemRegistros As Boolean = tbl.Rows.Count > 0 If tabelaTemRegistros Then result.Append("DataTable(Count) " & TABELA_ORDER + " possui registros " & Environment.NewLine & Environment.NewLine) Else result.Append("DataTable(Count) " & TABELA_ORDER + " NÃO possui registros " & Environment.NewLine & _ Environment.NewLine) End If Dim conn As OleDbConnection = New OleDbConnection(strConn) Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM ORDERS", conn) conn.Open() Dim orderReader As OleDbDataReader = cmd.ExecuteReader result.Append("DataReader(HasRows) " & TABELA_ORDER & " possui registros = " & orderReader.HasRows.ToString _ & Environment.NewLine & Environment.NewLine) Dim readerTemRegistros As Boolean = orderReader.Read If readerTemRegistros Then result.Append("DataReader(Read) " & TABELA_ORDER & " possui registros " & Environment.NewLine & Environment.NewLine) Else result.Append("DataReader(Read) " & TABELA_ORDER & " NÃO possui registros " & Environment.NewLine & Environment.NewLine) End If orderReader.Close() conn.Close() resultado.Text = result.ToString End Sub |
Executando o projeto teremos:
O resultado acima exibe a utilização das propriedades Count, HasRows e do método Read() retornando valores para a tabela Orders do banco de dados Northwind.mdb.
O objeto DataTable contém um objeto DataRowCollection que contém todas os objetos DataRow em uma Tabela. A coleção DataRowCollection possui a propriedade Count que retorna o número de linhas em uma tabela. A propriedade Count para uma tabela vazia retorna o valor zero.
A propriedade HasRows de um DataReader retorna um valor Booleano indicando se o DataReader contém qualquer registro.
Outra forma é usar o método Read() para avançar no DataReader para o próximo registro. Ele retorna um valor True se o registro esta disponível ou False caso contrário. A primeira chamada ao método Read() irá indicar se qualquer registro foi retornado pelo DataReader.
Esta é a única forma de determinar se um DataReader contém qualquer registro antes da introdução do propriedade HasRows na versão 1.1 do .NET Framework
E tenho dito... Até mais ver...