Você como obter o número de tabelas existentes em um banco de dados SQL Server ? Se não sabe, então siga-me... |
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:
2 Panel
1 GroupBox
5 Label
4 TextBox
2 Button
1 ListBox
Disponha os controles conforme o leiaute da figura abaixo:
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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
VB .NET - DataGridView - Selecionando e exibindo registros - Macoratti
Criando Banco de dados , Tabelas , Stored Procedures e ... - Macoratti
Criar banco de dados via Código - Access , SQL Server - Macoratti
C# - Obtendo as tabelas de um banco de dados Access - Macoratti