Domanda

Devo aprire tabelle libere foxpro in vb.net usando la connessione oledb.

Ma ... ho solo bisogno di ottenere i nomi delle colonne. Non ho davvero bisogno di "selezionare" nulla. Sto cercando di sfogliare dinamicamente tutte le nostre tabelle gratuite e impostare un elenco di ogni colonna da ogni file e rifarlo su un'altra tabella libera che contiene una descrizione di ogni colonna.

Ora ho un modello funzionante, ma richiede che lo faccia ...

SELECT TOP 1 FROM "File" ORDER BY 1

Ma sulla tabella più grande, ci vogliono più di due minuti solo per leggere il primo record e ci sono oltre 250 tabelle. Complessivamente, sono necessari dai 15 ai 20 minuti.

Oppure, c'è un altro modo per ottenere solo il primo record della tabella senza usare 'ORDER BY'?

Ecco quello che ho finora. & Quot; File " viene passato come parametro.
Conterrebbe informazioni come " 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)                     

Prendo quindi il datatable (dt) e eseguo il ciclo continuo per ottenere le informazioni sulla colonna.

Vorrei che fosse veloce come Visual Studio quando creo un set di dati e carico tutte le tabelle dalla directory attraverso la procedura guidata. È in grado di trovare molto rapidamente tutte le informazioni sulla colonna senza leggere i dati dalla tabella.

Fammi sapere se hai bisogno di maggiori informazioni.

Grazie.

È stato utile?

Soluzione

Perché è necessario ottenere alcun record? Dovresti essere in grado di dire:

SELECT * FROM "File" where 1 = 0

Questo ti darà un set di risultati vuoto, ti darà anche metadati sulla proiezione restituita.

Potresti anche voler esaminare Metodo GetOleDbSchemaTable sul OleDbConnection class , poiché ti permetterà di ottenere informazioni sullo schema del database senza dover eseguire una query.

Puoi anche utilizzare le Estensioni Microsoft ADO per la definizione dei dati Lingua e sicurezza tramite interoperabilità COM (mxADOX.dll) per ottenere anche le informazioni sullo schema.

Altri suggerimenti

Non ho provato questo /. Ma sembra la strada da percorrere.

In particolare il " GetSchema " metodo sull'istanza OleDbConnection. http://msdn.microsoft.com/en-us /library/ms254934(VS.80).aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top