Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: criskapunk en 1 Agosto 2011, 18:48 pm



Título: Comparar esquemas de dos bases de datos
Publicado por: criskapunk en 1 Agosto 2011, 18:48 pm
Buenas!

El problema es asi:
Tengo que comparar el esquema de dos bases de datos en Acces usando vb.net y devolver todos los datos/tablas/relaciones, etc que esten presentes en una y no en la otra.

En Access lei que se puede utilizar el documentador, que devuelve la estructura de una base de datos, pero no entiendo como puedo hacer para compararlo :\


Edit:
Encontre esta forma de obtener el nombre de todas las tablas de la base, pero no encuentro todavia como puedo hacer para obtener los campos de cada una. Alguna sugerencia?

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  4.  
  5.        Dim conexion As OleDb.OleDbConnection
  6.        Dim strConexion As String
  7.        Dim tablas(0) As String
  8.  
  9.        '-- Conexion con la base de datos modelo --
  10.        strConexion = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=C:\base.mdb;Jet OLEDB:Database Password=pass;"
  11.        conexion = New OleDb.OleDbConnection(strConexion)
  12.        conexion.Open()
  13.  
  14.        '-- Almacena en un vector los nombres de todas las tablas --
  15.        Dim i As Integer = 0
  16.        Dim tabla As DataTable = conexion.GetSchema("TABLES")
  17.        For Each t As DataRow In tabla.Rows
  18.            Dim o As Object = Nothing
  19.            o = t.Item("TABLE_TYPE")
  20.            If (o.ToString.ToUpper = "TABLE") OrElse (o.ToString.ToUpper = "BASE_TABLE") Then
  21.                tablas(i) = t("TABLE_NAME").ToString
  22.                MessageBox.Show(i)
  23.                For Each c As DataColumn In tabla.Columns
  24.                    MessageBox.Show(c.ColumnName)
  25.                Next
  26.                ReDim Preserve tablas(i + 1)
  27.                i += 1
  28.            End If
  29.        Next
  30.  
  31.        MessageBox.Show(tablas(0))
  32.        conexion.Close()
  33.  
  34.    End Sub
  35. End Class

Un saludo y gracias.