Listagem de Base de dados em vb.net

Chipy

Power Member
Boa tarde a todos,

Tenho uma dúvida ( que secalhar até é simples)...Gostava de listar numa DataGrid ou numa ComboBox as Base de dados que estão associadas a um determinado servidor de Sql...Portanto já fiz um form de entrada em que escolho o servidor , introduzo o Username e Password, agora o objectvo é que me aparece as Base de dados associadas a esse Login em forma de listagem.
Aliás eu penso que posso fazer isto com um comando de Sql, só que não percebo lá muito.
Eu tenho:

Dim list As SqlCommand = New SqlCommand("SELECT 'Databases' WHERE UID='txt_user.text' AND pwd='txt_pass.text", liga)

Com este comando eu pretendo selecionar todas as Base de dados em que o user e a password estejam relecionadas as Bds....O user e a pass sou eu que meto nas TextBoxes

em que :

liga = New SqlConnection("Data Source=" & Me.txt_server.Text & ";UID=" & Me.txt_user.Text & ";pwd=" & Me.txt_pass.Text & ";")

Alguem me poderia dar alguma dica????
 
Última edição:
Olá

Quando fazes uma ligação a um servidor, estás na realidade a especificar qual a Base de Dados que queres ligar-te. Assim, a tua dúvida deve estar mal feita. Não queres saber o nome das Bases de Dados de um servidor, mas sim o nome das Tabelas da Base de Dados a que estás ligado.

Na string de ligação que escreves-te no teu post, falta o nome da base de dados:

Errado: liga = New SqlConnection("Data Source=" & Me.txt_server.Text & ";UID=" & Me.txt_user.Text & ";pwd=" & Me.txt_pass.Text & ";")

Correcto: liga = New SqlConnection("Data Source=" & Me.txt_server.Text & ";Initial Catalog=" & Me.txt_bd.Text & ";UID=" & Me.txt_user.Text & ";pwd=" & Me.txt_pass.Text & ";")

A tua string para saber o nome das "databases" também está errada. Para saber o nome das tabelas da Base de Dados, usa:

Dim list As SqlCommand = New SqlCommand("SELECT * FROM sysobjects WHERE type = 'U'", liga)

Este comando vai dar-te o nome de todas as tabelas da base de dados que estás ligado, à excepção das tabelas de sistema (que não devem interessar para o caso).
Boa Sorte!
 
Boas,

Tens razão a minha dúvida foi mal colocada, isto porque numa fase inicial o objectivo era criar um programa que por exemplo:

O Sql Server M. Studio Express, têm vários servidores, eu escolhia o servidor "A", criava o Login "Ricardo", dava-lhe as permissões de ler editar nas Base de dados 1, 2, 3....
Agora no Vb.net crio um Form com 3 TextBoxes, em que o utilizador "Ricardo" introduz o seu Login, coloca o nome do servidor e automáticamente numa ComboBox iria aparecer o nome das Base de dados 1, 2 e 3....Por fim o utilizador escolhia por exemplo a Base de dados 3 e num outro Form iria então aparecer o nome das tabelas em que ao selecionar uma aleatoriamente uma delas, aparecia uma DataGrid com todos os campos dessa mesma tabela
Não sei se com este exemplo me fiz entender melhor...Tambem náo sei se é possível fazer isto:) é a primeira vez que estou a trabalhar com o Sql de forma tão directa e estou habituado a trabalhar mais com o VB6

Qualquer das formas, vou imaginar que à partida o utilizador sabe o nome da base de dados, então o que o programa vai fazer é listar o nome das tabelas para depois poderem ser lidas e editadas
Agora o comando,

Dim list As SqlCommand = New SqlCommand("SELECT * FROM sysobjects WHERE type = 'U'", liga)


Aparece o nome de umas tabelas muito estranhas:confused: , que não têm nada a ver com a base de dados...
Uma pergunta, "sysobjects" não faz com que aparecam o nome das tabelas do sistema em geral????
 
Boas,

Já agora:) , sabes como é que eu coloco a descrição(id, nome, morada etc...) da tabela selecionada numa outra datagrid???
Eu tou a fazer da seguinte forma:

dim str as string

If (DataG.CurrentCell.Selected = True) Then
str = DataG.CurrentCell.Value
bCmd.CommandText = "Select * From Table str"
bAdapter.SelectCommand = bCmd
bAdapter.Fill(bSet, "str"
)
DataG2.DataSource = bSet.Tables(
"str")

End If

em que:
DataG é a datagrid onde estao o nome das tabelas
DataG2 é a datagrid onde vai aparecer a descrição da tabela selecionada


Mas dá-me um erro que diz: "Invalid object name 'str'."
Eu estava a tentar associar a celula selecionada da DataGrid1 a uma variavel do tipo String, para depois poder fazer a Query de Sql e associar à DataSource da DataGrid2....
 
Boas,

Problema resolvido, da seguinte forma:

Dim stra As String = String.Format(DataG.CurrentCell.Value)
bCmd.CommandText = (
"Select * From " & stra & ";")
bAdapter.SelectCommand = bCmd
bAdapter.Fill(bSet, stra)
f2.DataG3.DataSource = bSet.Tables(stra)

:) :) :)
 
Back
Topo