1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Listagem de Base de dados em vb.net

Discussão em 'Programação' iniciada por Chipy, 26 de Julho de 2006. (Respostas: 8; Visualizações: 2151)

  1. Chipy

    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: 26 de Julho de 2006
  2. 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!
     
  3. Chipy

    Chipy Power Member

    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????
     
  4. Aahmm..

    SELECT name FROM sysobjects WHERE type = 'U'
     
  5. Chipy

    Chipy Power Member

    Já Bomba a 100%

    Thank you very much...:)
     
  6. Chipy

    Chipy Power Member

    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....
     
  7. Chipy

    Chipy Power Member

    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)

    :) :) :)
     
  8. vctp

    vctp Power Member

    Eu queria a partir de uma instância listar numa combo box as bases de dados da instancia. Alguém ajuda?
     
  9. jpaulino

    jpaulino Power Member

    Tens de explicar melhor e talvés seja melhor criar um novo tópico.
     

Partilhar esta Página