VB .NET - Obtendo o número de tabelas do Banco de dados
  Você como obter o número de tabelas existentes em um banco de dados SQL Server ? Se não sabe, então siga-me...

Uma tabela é responsável pelo armazenamento de dados no banco de dados sendo um conjunto de elementos de dados que é organizado usando um modelo de colunas verticais e linhas horizontais.

Um banco de dados é composto de muitas tabelas vinculadas de linhas e colunas, cada uma contendo dados específicos.

Em muitas situações você deve encontrar o número de  tabelas existentes em seu banco de dados. Todas as informações sobre seu banco de dados SQL Server estão armazenadas em suas tabelas de sistema.

Então para obter informações sobre o número de tabelas basta consultar o objeto sys.tables que retorna uma linha para cada tabela de usuário do SQL Server.

Então basta usar o seguinte comando SQL :

SELECT DISTINCT (name) FROM sys.Tables

Para que a consulta funcione você deve ter permissão de acesso as tabelas.

Recursos Usados:

Criando o projeto no VS Community 2017

Abra no VS community 2017 e no menu File clique em New Project;

A seguir selecione o template Visual Basic -> Windows -> Windows Forms Application e informe o nome VbnAdonet_Tabelas e clique em OK;

A partir da Toolbox inclua os seguintes controles no formulário:

Disponha os controles conforme o leiaute da figura abaixo:

Inclua a seguir o código abaixo no formulário Form1.vb :
 
Public Class Form1
    Private Sub btnObterNumeroTabelas_Click(sender As Object, e As EventArgs) Handles btnObterNumeroTabelas.Click
        Dim connetionString As String
        Dim connection As SqlConnection = Nothing
        Dim command As SqlCommand = Nothing
        Dim adapter As New SqlDataAdapter
        Dim ds As New DataSet
        Dim i As Integer
        Dim sql As String
        connetionString = GetStringConexaoBD()
        sql = "Select DISTINCT(name) FROM sys.Tables"
        Try
            connection = New SqlConnection(connetionString)
            connection.Open()
            command = New SqlCommand(sql, connection)
            adapter.SelectCommand = command
            adapter.Fill(ds)
             'Exibe o número de tabelas na label lbltabelas
            lblTabelas.Text = ds.Tables(0).Rows.Count - 1 & " tabelas"
             'Preenche o listbox com os nomes das tabelas
            For i = 0 To ds.Tables(0).Rows.Count - 1
                lbTabelas.Items.Add(ds.Tables(0).Rows(i).Item(0))
            Next
        Catch ex As Exception
            MsgBox("A conexão falhou : " & ex.Message)
        Finally
            If connection IsNot Nothing Then
                If connection.State = ConnectionState.Open Then
                    connection.Close()
                End If
                If connection.State = ConnectionState.Closed Then
                    adapter.Dispose()
                    command.Dispose()
                End If
            End If
        End Try
    End Sub
    Private Function GetStringConexaoBD() As String
        Dim DataSource As String = txtDataSource.Text
        Dim Catalogo As String = txtCatalog.Text
        Dim User As String = txtUser.Text
        Dim Senha As String = txtSenha.Text
        Dim con As String
        If String.IsNullOrEmpty(txtUser.Text) Then
            con = "Data Source=" & DataSource & ";Initial Catalog=" & Catalogo & ";Integrated Security=True"
        Else
            con = "Data Source=" & DataSource & ";Initial Catalog=" & Catalogo & ";User ID=" & txtUser.Text & ";Password=" & txtSenha.Text
        End If
        Return con
    End Function
End Class

Você pode incrementar o projeto prevendo outras strings de conexão e pode também refinar a sua consulta sobre as tabelas.

Na consulta abaixo estamos retornando todas as tabelas de usuário que não possuem chave primária :

SELECT SCHEMA_NAME(schema_id) AS schema_name , name AS table_name   
FROM sys.tables   
WHERE OBJECTPROPERTY(object_id,'TableHasPrimaryKey') = 0  
ORDER BY schema_name, table_name;

Pegue o projeto completo neste link :  VbnAdonet_Tabelas.zip

Considerai os corvos, que nem semeiam, nem segam, nem têm despensa nem celeiro, e Deus os alimenta; quanto mais valeis vós do que as aves? Lucas 12:24

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti