我试图从一些使用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是由另一个应用程序创建和维护的(一个相当大的年龄)。我只需要访问存储在其中的数据。
答案 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