28/11/2008, 13:20
|
| | | Fecha de Ingreso: noviembre-2008
Mensajes: 5
Antigüedad: 16 años, 1 mes Puntos: 0 | |
Respuesta: Ayuda para: SQL server 2005 Tengo este codigo pero me dice que mi base no existe, y cuando coloco bases del sistema si me las muestra. Ahora que hice mal??
necesitas:
Un control Listview llamado ListView1
Un ComboBox llamado ComboBox1
Un Control Button llamado Button1
Configurar la cadena de conexión
Option Explicit On
Option Strict On
Imports System.Data.SqlClient
Public Class Form1
Private name_bd As String = String.Empty
' Cadena de conexión para sql server express en modo local
Private Const cs As String = "Data Source=(local)\SQLEXPRESS;" & _
"Integrated Security=True;" & _
"Initial Catalog="
' función para llenar el LV
Public Sub cargar_ListView( _
ByRef ListView As ListView, _
ByVal sql As String, _
ByVal db As String)
Try
' Crea y abre una nueva conexión
Using cn As New SqlConnection(cs & db)
cn.Open()
' propiedades del SqlCommand
Dim comando As New SqlCommand
With comando
.CommandType = CommandType.Text
.CommandText = sql
.Connection = cn
End With
Dim da As New SqlDataAdapter ' Crear nuevo SqlDataAdapter
Dim dataset As New DataSet ' Crear nuevo dataset
da.SelectCommand = comando
' llenar el dataset
da.Fill(dataset, "Tabla")
' Propiedades del ListView
With ListView
.Items.Clear()
.Columns.Clear()
.View = View.Details
.GridLines = True
.FullRowSelect = True
' añadir los nombres de columnas
For c As Integer = 0 To dataset.Tables("tabla").Columns.Count - 1
.Columns.Add(dataset.Tables("tabla").Columns(c).Ca ption)
Next
End With
' Añadir los registros de la tabla
With dataset.Tables("tabla")
For f As Integer = 0 To .Rows.Count - 1
Dim dato As New ListViewItem(.Rows(f).Item(0).ToString)
' recorrer las columnas
For c As Integer = 1 To .Columns.Count - 1
dato.SubItems.Add(.Rows(f).Item(c).ToString())
Next
ListView.Items.Add(dato)
Next
End With
End Using
' errores
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End Sub
' Función que retorna un objeto DataTable para
'enlazarlo con el combobox y visualizar las tablas
Private Function get_Tablas( _
ByVal la_base_de_datos As String) As DataTable
Try
' nueva conexión a sql
Using cn As New SqlConnection(cs)
' nuevo comando
Dim comando As SqlCommand = New SqlCommand()
' Nuevo DataAdapter
Dim da As SqlDataAdapter = New SqlDataAdapter()
'Nuevo DataTable
Dim dt As DataTable = New DataTable()
'Asignación de propiedades para el comando
With comando
.Connection = cn
.CommandType = CommandType.Text
' instrucción T-SQL para obtener las tablas
.CommandText = "Use [" & la_base_de_datos & "] " & _
"Select * From INFORMATION_SCHEMA.TABLES " & _
"Where TABLE_TYPE = 'BASE TABLE'"
da.SelectCommand = comando
End With
da.Fill(dt)
' retornar el dataTable
Return dt
End Using
' errores
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
Return Nothing
End Function
Private Sub Form1_Load( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Button1.Text = "Obtener tablas"
' Propiedades del ComboBox
With ComboBox1
.ValueMember = "TABLE_CATALOG"
.DisplayMember = "TABLE_NAME"
End With
End Sub
Private Sub ComboBox1_SelectedIndexChanged( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
' cargar los registros de la tabla indicada por el combobox
cargar_ListView( _
ListView1, _
"Select * from [" & ComboBox1.Text.ToString & "]", _
name_bd)
End Sub
Private Sub Button1_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
name_bd = InputBox("Escribir el nombre de la base de datos")
If name_bd <> String.Empty Then
Try
' Indicar la base de datos para recuperar
'y cargar las tablas en la lista
ComboBox1.DataSource = get_Tablas(name_bd.Trim)
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End If
End Sub
End Class |