使用Vb.NET从NTX文件中读取

时间:2015-07-21 16:11:01

标签: vb.net indexing oledb dbf dbase

我试图从一些使用NTX文件的DBF文件中读取VB.NET中的索引。目前,我不得不使用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用于此项目,因为DataBases是由另一个应用程序创建和维护的(一个相当大的年龄)。我只需要访问存储在其中的数据。

1 个答案:

答案 0 :(得分:2)

下载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