Question

Je dois ouvrir des tables foxpro free sur vb.net en utilisant la connexion oledb.

Mais ... je n'ai besoin que d'obtenir les noms de colonnes. Je n'ai pas vraiment besoin de "sélectionner" quoi que ce soit. J'essaie de parcourir dynamiquement toutes nos tables gratuites et de mettre en place une liste de toutes les colonnes de chaque fichier et de la xréf dans une autre table libre contenant une description de chaque colonne.

J'ai un modèle de travail maintenant, mais il faut que je le fasse ...

SELECT TOP 1 FROM "File" ORDER BY 1

Mais sur la table la plus grande, il faut plus de deux minutes pour lire le premier enregistrement et il y a plus de 250 tables. En général, cela prend entre 15 et 20 minutes.

Ou existe-t-il un autre moyen d'obtenir uniquement le premier enregistrement de la table sans utiliser 'ORDER BY'?

Voici ce que j'ai jusqu'à présent. " Fichier " est passé en paramètre.
Il contiendrait des informations telles que "C: \ data \ table1.dbf"

Dim filePath As String
filePath = IO.Path.GetDirectoryName(file)
myOledbConnection = New OleDbConnection("Provider=VFPOLEDB.1;Data Source=" & filePath & ";Collating Sequence=MACHINE")
myOledbCommand = New OleDbCommand
myOledbDataAdapter = New OleDbDataAdapter
Dim fields, from, order As String

fields = "select top 1 *"
from = " from " & file
order = " order by 1"

myOledbCommand.CommandText = fields & from & order
myOledbCommand.Connection = myOledbConnection

myOledbDataAdapter.SelectCommand = myOledbCommand
myOledbDataAdapter.Fill(dt)                     

Je prends ensuite le datatable (dt) et effectue une boucle pour obtenir les informations sur la colonne.

Je voudrais que ce soit aussi rapide que Visual Studio lorsque je crée un jeu de données et charge toutes les tables du répertoire via l'assistant. Il est capable de trouver très rapidement toutes les informations de colonne sans lire les données du tableau.

Faites-moi savoir si vous avez besoin de plus d'informations.

Merci.

Était-ce utile?

La solution

Pourquoi avez-vous besoin de documents? Vous devriez pouvoir dire:

SELECT * FROM "File" where 1 = 0

Cela vous donnera un résultat vide, ainsi que des métadonnées sur la projection renvoyée.

Vous pouvez également consulter la Méthode GetOleDbSchemaTable sur la OleDbConnection classe , car cela vous permettra d'obtenir des informations sur le schéma de la base de données sans avoir à effectuer de requête.

Vous pouvez également utiliser les extensions Microsoft ADO pour la définition de données. Langue et sécurité via COM interop (mxADOX.dll) pour obtenir également les informations sur le schéma.

Autres conseils

Je n’ai pas essayé cela /. Mais cela ressemble à la voie à suivre.

Plus précisément, le " GetSchema " méthode sur l'instance OleDbConnection. http://msdn.microsoft.com/en-us /library/ms254934(VS.80).aspx

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