Pregunta

¿Existe una manera fácil de leer un archivo completo de Access (.mdb) en un conjunto de datos en .NET (específicamente C# o VB)?

¿O al menos obtener una lista de tablas de un archivo de acceso para poder recorrerlo y agregarlas una a la vez en un conjunto de datos?

¿Fue útil?

Solución

Gracias por las sugerencias.Pude usar esos ejemplos para armar este código, que parece lograr lo que estoy buscando.

Using cn = New OleDbConnection(connectionstring)
    cn.Open()
    Dim ds As DataSet = new DataSet()

    Dim Schema As DataTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})
    For i As Integer = 0 To Schema.Rows.Count - 1
        Dim dt As DataTable = New DataTable(Schema.Rows(i)!TABLE_NAME.ToString())

        Using adapter = New OleDbDataAdapter("SELECT * FROM " + Schema.Rows(i)!TABLE_NAME.ToString(), cn)
            adapter.Fill(dt)
        End Using

        ds.Tables.Add(dt)
    Next i
End Using

Otros consejos

Debería poder acceder a él mediante un Conexión OleDb.

Aquí está un tutorial sobre el acceso a la base de datos usándolo para archivos de MS Access.

En términos de obtener los nombres de las tablas, en mis días de VB6 siempre usaba ADOX, no estoy seguro de cómo lo hacen ahora en .NET.Aunque sé que hay una tabla del sistema en el archivo de acceso, quiero decir "mso...".¡Busco en Google!

EDITAR

¡Ah, ja! objetosmsys !!xDD

MSDN tiene un artículo sobre cómo usar ADO.NET para conectar y editar registros en una base de datos de Access.Una vez realizada su conexión OleDB, puede crear fácilmente su DataReader/DataAdapter y procesarlo según sea necesario.

EDITAR:¡Ah!¡¡¡Maldito seas Rob y tus divinas habilidades para escribir!!!8^D

Hay una discusión sobre este punto en Menos que un punto.Aquí hay un ejemplo de código de la discusión.

   public DataTable GetColumns(string tableName)
    {
        string[] restrictions = new string[4];
        restrictions[2] = tableName;

        _connDb.Open();

        DataTable mDT = _connDb.GetSchema("Columns", restrictions);

        _connDb.Close();

        return mDT;
    }

Su pregunta original tal como está redactada no tiene sentido:

¿Existe una manera fácil de leer un archivo completo de Access (.mdb) en...

ciertamente tu no desea todo el contenido del archivo MDB.Lo que desea es el contenido de sus tablas de datos que están almacenadas en el MDB.Tenga en cuenta que tampoco desea el contenido de las tablas del sistema.

El punto clave:

Estás preguntando sobre JET, no sobre ACCESS.

Jet es el motor de base de datos que se envía como almacén de datos predeterminado de Access (y en el que se almacenan los propios objetos de Access).Pero "Acceso" significa mucho más que sólo las tablas de datos.

Siempre que haga una pregunta y confunda Access y Jet, probablemente obtendrá al menos algunas respuestas inútiles.

Y gente como yo te regañará, porque los desarrolladores realmente deberían saber que no deben ofuscar distinciones cruciales.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top