【问题标题】:Open FoxPro Table in VB.net 2005在 VB.net 2005 中打开 FoxPro 表
【发布时间】:2009-01-07 20:43:03
【问题描述】:

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

如果您需要更多信息,请告诉我。

谢谢。

【问题讨论】:

    标签: vb.net oledb foxpro visual-foxpro


    【解决方案1】:

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

    SELECT * FROM "File" where 1 = 0
    

    这会给你一个空的结果集,也会给你返回投影的元数据。

    您可能还想查看OleDbConnection class 上的GetOleDbSchemaTable method,因为它可以让您获得有关数据库架构的信息,而无需执行查询。

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

    【讨论】:

    • 谢谢。 'where 1 = 0' 做到了。我不知道那件事。吸盘现在跑了!我也将研究该架构方法。
    • 只是更新 getSchema 不是我需要的。但是'1 = 0'是。非常感谢!
    【解决方案2】:

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

    特别是 OleDbConnection 实例上的“GetSchema”方法。 http://msdn.microsoft.com/en-us/library/ms254934(VS.80).aspx

    【讨论】:

    • 感谢您的链接。我会深入研究一下,看看它是否有效。我稍后会更新结果。
    • 使用 GetSchema 返回以下内容。 (我没有清除任何数据) TABLE_CATALOG = '' TABLE_SCHEMA = '' TABLE_NAME = 'msg_seq' TABLE_TYPE = 'TABLE' TABLE_GUID = '' DESCRIPTION = '' TABLE_PROPID = '' DATE_CREATED = '12/22/2008 10:51:42 AM' DATE_MODIFIED = '11/12/2008 9:23:36 AM'
    • 对不起,上面的内容很丑。这些是 = 符号后的单引号。如果我正确地执行了 getschema 命令,它将无法满足我的要求。还是谢谢你的建议!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 2021-12-02
    相关资源
    最近更新 更多