当前位置:  开发笔记 > 后端 > 正文

在VB.net 2005中打开FoxPro表

如何解决《在VB.net2005中打开FoxPro表》经验,为你挑选了1个好方法。

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

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

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

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一样快.它能够非常快速地找到所有列信息,而无需从表中读取数据.

如果您需要更多信息,请与我们联系.

谢谢.



1> casperOne..:

为什么你需要获得任何记录?你应该可以说:

SELECT * FROM "File" where 1 = 0

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

您可能还需要寻找到该GetOleDbSchemaTable方法的OleDbConnection类,因为它可以让你获取有关数据库的架构信息,而无需进行查询.

您还可以通过COM interop(mxADOX.dll)使用Microsoft ADO Extensions for Data Definition Language and Security来获取架构信息.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有