Frage

ich brauche foxpro freie Tische in vb.net mit der OLEDB-Verbindung zu öffnen.

Aber ... Ich brauche nur die Spaltennamen zu erhalten. Ich brauche nicht wirklich etwas ‚wählen‘. Ich versuche, durch alle unsere freien Tabellen dynamisch zu durchsuchen und eine Liste von jeder Spalte von jeder Datei und xref, dass auf einen anderen freien Tisch einrichten, die eine Beschreibung jeder Spalte enthält.

Ich habe ein Arbeitsmodell jetzt, aber es erfordert, dass ich ...

SELECT TOP 1 FROM "File" ORDER BY 1

Aber auf dem größten Tisch, dauert es über zwei Minuten nur in dem ersten Datensatz zu lesen, und es gibt mehr als 250 Tabellen. Insgesamt dauert es zwischen 15 und 20 Minuten.

Oder gibt es einen anderen Weg, um nur den ersten Datensatz der Tabelle zu erhalten, ohne ‚ORDER BY‘ verwenden?

Hier ist, was ich bisher haben. „Datei“ wird als Parameter übergeben.
Es würde enthalten Informationen wie "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)                     

ich dann die Datentabelle (dt) und eine Schleife durch die Spalteninformationen zu erhalten.

Ich mag es so schnell sein wie Visual Studio, wenn ich einen Datensatz erstellen und alle Tabellen aus dem Verzeichnis durch die Assistenten laden. Es ist in der Lage, sehr schnell alle Spalteninformationen ohne aus der Tabelle in den Daten zu lesen.

Lassen Sie mich wissen, wenn Sie mehr Informationen benötigen.

Danke.

War es hilfreich?

Lösung

Warum haben Sie irgendwelche Aufzeichnungen überhaupt bekommen müssen? Sie sollen sagen können:

SELECT * FROM "File" where 1 = 0

Dies wird Ihnen ein leeres Resultset, erhalten Sie auch Metadaten auf die Projektion zurück.

Sie können auch in die GetOleDbSchemaTable Methode auf der OleDbConnection Klasse , wie es Sie eine Abfrage ausführen, ohne Informationen über das Schema der Datenbank erhalten können.

Sie können auch die Microsoft ADO Extensions für Data Definition Sprache und Sicherheits durch COM-Interop (mxADOX.dll) als auch das Schema Informationen zu erhalten.

Andere Tipps

Ich habe dieses / nicht versucht. Aber es sieht aus wie der Weg zu gehen.

Insbesondere die "GetSchema" -Methode auf OleDbConnection-Instanz. http://msdn.microsoft.com/en-us /library/ms254934(VS.80).aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top