【问题标题】:Read from NTX files with Vb.NET使用 Vb.NET 从 NTX 文件中读取
【发布时间】:2015-07-21 16:11:01
【问题描述】:

我正在尝试读取一些使用 NTX 文件在 VB.NET 中进行索引的 DBF 文件。目前,我不得不使用 OLEDB 直接从 DBF 文件中读取,由于 dbase 的平面文件数据存储方法,这非常慢。所以,我想知道是否有人可以告诉我如何通过 VB.NET 中的 NTX 索引文件访问 DBF 文件。

如果我需要下载第三方库,我可以,但如果第三方库要花钱,我没有钱支付。它需要是免费的。

这是我目前用来访问 DBF 文件的文件。

Private Shared ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & My.Settings.DataPath & ";Extended Properties=dBase IV"
Public Shared dBaseConnection As New System.Data.OleDb.OleDbConnection(ConnectionString)
Dim dBaseCommand As New System.Data.OleDb.OleDbCommand("SELECT * FROM `PAGES.NTX` WHERE `PAGE_NUM` BETWEEN 241 AND 270", dBaseConnection)
Dim dBaseDataReader As System.Data.OleDb.OleDbDataReader = dBaseCommand.ExecuteReader(CommandBehavior.SequentialAccess)

然而,这仍然直接从 DBF 文件中读取并忽略 NTX 索引。有什么帮助吗?

注意:我不能“选择”为这个项目使用 SQL,因为数据库是由另一个应用程序创建和维护的(一个相当大的年龄)。我只需要访问它们以获取其中存储的数据。

【问题讨论】:

  • 当然可以选择使用SQL Server。 SQL Server 有一个称为链接服务器的功能,它允许您在 SQL Server 实例中“托管”您的 DBF 文件。
  • @SamAxe 由于 PCI 合规性,我无法运行单独的服务器。我只需要处理我可以使用的文件和 VB.NET 的本地实例。
  • Advantage OLEDB provider for ADO.NET 声称与 DBF/NTX 文件通信。
  • 您不能将记录导入到 sql 本地数据库文件中吗?
  • 我不明白为什么这个问题被否决了...

标签: vb.net indexing oledb dbf dbase


【解决方案1】:

下载Advantage .NET Data Provider

这是我能找到的唯一例子。由于我没有要测试的文件,这只是一个示例:

    'Set the TypeTable to NTX
    Dim conn As New AdsConnection("data source=c:\data;" + "ServerType=remote|local; TableType=NTX")
    Dim cmd As AdsCommand
    Dim reader As AdsDataReader
    Dim iField As Integer

    Try

        ' make the connection to the server
        conn.Open()

        ' create a command object
        cmd = conn.CreateCommand()

        ' specify a simple SELECT statement
        cmd.CommandText = "select * from departments"

        ' execute the statement and create a reader
        reader = cmd.ExecuteReader()

        ' dump the results of the query to the console
        While reader.Read()
            For iField = 0 To reader.FieldCount - 1
                Console.Write(reader.GetValue(iField) + " ")
            Next
            Console.WriteLine()
        End While

        conn.Close()
    Catch e As AdsException
        ' print the exception message
        Console.WriteLine(e.Message)
    End Try

【讨论】:

  • 我会在我下班回家的时候试一试,如果成功了会告诉你
  • 所以,我已经去那个图书馆工作了。但是,我很确定默认情况下它不会查看索引文件。那么,有没有办法定义它使用什么索引?
  • 根据他们的帮助文件:要获得对创建和打开 NTX 索引文件的支持,请创建一个数据库(在数据字典中定义)并将表和关联的 NTX 索引文件添加到该数据库。然后在该数据库连接上使用这些表。 NTX 索引文件将在打开相应的 DBF 表时自动打开。您可以使用 Advantage Data Architect 创建数据库和数据字典。 devzone.advantagedatabase.com/dz/webhelp/advantage8.1/…
  • 这是我能找到的唯一例子,它不在 VB 中,但你应该能够将它翻译成 VB.NET devzone.advantagedatabase.com/dz/WebHelp/Advantage11.1/…
  • 感谢@EJD 的所有帮助。希望我可以使用这些信息:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-15
  • 1970-01-01
  • 2015-10-02
相关资源
最近更新 更多