Question

Est-il un moyen facile de lire l'intégralité d'un fichier Access (.mdb) dans un DataSet .NET (plus précisément, C# ou VB)?

Ou au moins pour obtenir une liste des tables à partir d'un fichier access afin que je puisse faire une boucle par elle et les ajouter un à un dans un DataSet?

Était-ce utile?

La solution

Merci pour les suggestions.J'ai été en mesure d'utiliser ces échantillons pour mettre ensemble ce code, qui semble réaliser ce que je suis à la recherche pour.

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

Autres conseils

Vous devriez être en mesure d'y accéder à l'aide d'un OleDbConnection.

Heres un tut sur DB accès à l'utiliser pour MS Access fichiers.

En termes d'obtenir les noms de table, de retour dans ma VB6 jours, j'ai toujours utilisé ADOX, pas sûr de savoir comment ils le font .NET maintenant..Même si je sais qu'il existe un système de tableau dans le fichier d'accès - tu veux dire "mso...".Je google!

MODIFIER

Ah ha! msysobjects !!xD

MSDN a un article sur la façon d'utiliser ADO.NET pour vous connecter et modifier des enregistrements dans une base de données Access.Une fois que votre connexion OleDB est fait, vous pouvez facilement créer votre objet DataReader/DataAdapter et les processus nécessaires.

EDIT:Gah!Vous maudissent Rob et votre dieu-comme la dactylographie capacités!!!8^D

Il y a une discussion sur ce point dans Moins De Point.Voici un exemple de code à partir de la discussion.

   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;
    }

Votre question de départ, tel que libellé, est un non-sens:

Est-il un moyen facile de lire l'intégralité d'un fichier Access (.mdb) en...

Vous avez certainement ne pas souhaitez la totalité du contenu du fichier MDB.Ce que vous voulez, c'est le contenu de vos tables de données qui sont stockées dans la base de données.Gardez à l'esprit que vous ne voulez pas que le contenu du système des tables.

Le point clé:

Vous vous posez à propos de JET, pas sur l'ACCÈS.

Jet est le moteur de base de données qui est livré par défaut le magasin de données d'Accès (et dans lequel l'Accès propres objets sont stockés).Mais "l'Accès" signifie quelque chose de beaucoup plus que juste les tableaux de données.

Chaque fois que vous posez une question et de confondre l'Accès et le Jet, vous aurez probablement obtenir au moins quelque inutile de réponses.

Et vous obtiendrez grondé par les goûts de moi, parce que les développeurs ont vraiment devrait savoir mieux que de dissimuler crucial distinctions.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top