我需要使用oledb连接在vb.net中打开foxpro免费表。

但是......我只需要获取列名。我真的不需要“选择”任何东西。 我正在尝试动态浏览所有的免费表,并设置每个文件和外部参照的每个列的列表到另一个包含每列描述的免费表。

我现在有一个工作模型,但它需要我做...

SELECT TOP 1 FROM "File" ORDER BY 1

但是在最大的桌子上,只需阅读第一张唱片就需要两分钟,而且有超过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

这将为您提供一个空结果集,还会为您提供有关返回投影的元数据。

您可能还想查看 GetOleDbSchemaTable 方法 nofollow noreferrer“> OleDbConnection 类,因为它允许您获取有关数据库架构的信息,而无需执行查询。

您还可以使用 Microsoft ADO Extensions for Data Definition语言和安全通过COM interop(mxADOX.dll)来获取架构信息。

其他提示

我没试过这个/。但是,它看起来像是要走的路。

具体而言,“GetSchema”是指“GetSchema”。 OleDbConnection实例上的方法。 http://msdn.microsoft.com/en-us /library/ms254934(VS.80).aspx

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top