質問

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

しかし...列名を取得するだけです。本当に「選択」する必要はありません。 私はすべての無料のテーブルを動的に参照し、すべてのファイルのすべての列のリストを設定し、各列の説明を含む別の無料のテーブルへの外部参照を設定しようとしています。

現在、動作するモデルがありますが、実行する必要があります...

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と同じくらい迅速に処理したいと思います。テーブルからデータを読み込まなくても、すべての列情報を非常にすばやく見つけることができます。

詳細情報が必要かどうか教えてください。

ありがとう。

役に立ちましたか?

解決

レコードを取得する必要があるのはなぜですか?あなたは言うことができるはずです:

SELECT * FROM "File" where 1 = 0

これにより、空の結果セットが返され、返される投影法のメタデータも提供されます。

OleDbConnection クラス。クエリを実行せずにデータベースのスキーマに関する情報を取得できるためです。

Microsoft ADO Extensions for Data Definitionも使用できます。 COM相互運用機能(mxADOX.dll)による言語とセキュリティを使用して、スキーマ情報も取得します。

他のヒント

これは試していません/。しかし、それは行く方法のように見えます。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top