4

oledb 接続を使用して、vb.net で foxpro フリー テーブルを開く必要があります。

しかし...列名だけを取得する必要があります。何かを「選択」する必要はありません。すべての空きテーブルを動的に参照し、すべてのファイルからすべての列のリストを設定し、各列の説明を含む別の空きテーブルに xref しようとしています。

私は現在、実用的なモデルを持っていますが、そうする必要があります...

SELECT TOP 1 FROM "File" ORDER BY 1

しかし、最大のテーブルでは、最初のレコードを読み取るだけで 2 分以上かかり、250 を超えるテーブルがあります。全体で、15 ~ 20 分かかります。

または、「ORDER BY」を使用せずにテーブルの最初のレコードのみを取得する別の方法はありますか?

これが私がこれまでに持っているものです。「ファイル」はパラメーターとして渡されます。
「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)                     

次に、データ テーブル (dt) を取得し、ループして列情報を取得します。

データセットを作成し、ウィザードを使用してディレクトリからすべてのテーブルをロードするときに、Visual Studio と同じくらい速く処理したいと考えています。テーブルからデータを読み取ることなく、すべての列情報を非常に迅速に見つけることができます。

さらに情報が必要な場合はお知らせください。

ありがとう。

4

2 に答える 2

1

私はこれを試していません/。しかし、それは進むべき道のように見えます。

具体的には、OleDbConnection インスタンスの「GetSchema」メソッドです。 http://msdn.microsoft.com/en-us/library/ms254934(VS.80).aspx

于 2009-01-07T21:08:10.973 に答える