lunes, 12 de enero de 2009

Obtener instancias de SQL Server y bases de datos disponibles desde .NET (VB.NET)

Aquí os dejo el código en VB.NET del formulario con los orígenes de datos de SQL Server disponibles, vamos, lo mismo que este ejemplo pero para los que no os gusta el ";" :P





Imports System.Data
Imports System.Data.Sql
Imports System.Data.SqlClient

Public Class frmConexiones
Private servidores As SqlDataSourceEnumerator
Private tablaServidores As DataTable
Private servidor As String


Public Sub New()

' Llamada necesaria para el Diseñador de Windows Forms.
InitializeComponent()

' Agregue cualquier inicialización después de la llamada a InitializeComponent().
servidores = SqlDataSourceEnumerator.Instance
tablaServidores = New DataTable()
End Sub



Private Sub cmbServidores_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbServidores.Click


' Comprobamos que no se haya cargado ya el combobox
If tablaServidores.Rows.Count = 0 Then
' Obtenemos un dataTable con la información sobre
' las instancias disponibles de SQL Server 2000 y 2005
tablaServidores = servidores.GetDataSources()

' Creamos una lista para que sea el origen de datos
' del combobox
Dim listaServidores As List(Of String) = New List(Of String)

' Recorremos el dataTable y añadimos un valor nuevo la
' lista con cada fila
For Each rowServidor As DataRow In tablaServidores.Rows

' La instancia de SQL Server puede tener nombre
' de instancia o únicamente el nombre del servidor,
' comprobamos si hay nombre de instancia para
' mostrarlo
If String.IsNullOrEmpty(rowServidor("InstanceName").ToString()) Then
listaServidores.Add(rowServidor("ServerName").ToString())
Else
listaServidores.Add(rowServidor("ServerName") & "\\" & rowServidor("InstanceName"))
End If

Next

'Asignamos la lista de servidores como origen de datos
' del combobox
Me.cmbServidores.DataSource = listaServidores
End If

End Sub


Private Sub cmbBasesdeDatos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbBasesdeDatos.Click

Dim listaBasesDatos As List(Of String) = New List(Of String)
Dim cadenaConexion As String
Dim selectSQL As String

' Se comprueba que haya un servidor seleccionado para
' poder conectarnos
If Me.cmbServidores.Text = "" Then
MsgBox("Debe seleccionar un servidor")
Return
End If

servidor = Me.cmbServidores.Text

'Componemos la cadena de conexión con el servidor seleccionado y
' seguridad integrada
' si la autenticación se hace con usuario y password hay
' que cambiar la cadena
cadenaConexion = "Data Source=" & servidor & " ;Integrated Security=True;Initial Catalog=master"


Using con As New SqlConnection(cadenaConexion)

' Abrimos la conexión
con.Open()

'Obtenemos los nombres de las bases de datos que
' haya en el servidor
selectSQL = "select name from sys.databases;"

Dim com As SqlCommand = New SqlCommand(selectSQL, con)
Dim dr As SqlDataReader = com.ExecuteReader()

' Recorremos el dataReader
While (dr.Read())
listaBasesDatos.Add(dr(0).ToString())
End While

'Asignamos la lista de bases de datos como origen
'de datos del combobox
Me.cmbBasesdeDatos.DataSource = listaBasesDatos


End Using

End Sub

End Class




Happy codding ;)

7 comentarios:

Unknown dijo...

Muy buen ejemplo, estimado, excelente, sobre todo si te pasas toda la noche buscando como obtener las bases de datos de una instancia de sql, le diste en el clavo...

gracias :P
un programador acongojado.

Pablo Bouzada dijo...

De nada hombre :)

Anónimo dijo...

Buen ejemplo amigo me ayudo muxo con unas plantillas personales que estoy desarrollando gracias XD

Anónimo dijo...

Excelente aporte, muchas gracias.. Me ha servidor muchisismo... Gracias

joalfegu

Anónimo dijo...

Amigo excelen aporte con los dos codigos, son de maravilla, gracias por esto a todos los que lo vean y lo utilicen les resolvera un gran problema con la cactura de las lista de las bases de datos, agracias amigo.

Phantom dijo...

Me salvaste!!!!

Anónimo dijo...

Acojonante !!! Muy muy buen ejemplo... No sabes cuanto te lo agradezco. Me ayudo mucho. Muchas gracias de veras.