2015-07-21 64 views
0

我想讀取一些使用NTX文件在VB.NET索引的DBF文件。目前,我不得不使用OLEDB直接讀取DBF文件,由於dbase的平面文件數據存儲方法,OLEDB文件速度很慢。所以,我想知道是否有人能告訴我如何通過VB.NET中的NTX索引文件訪問DBF文件。從NTX文件與Vb.NET讀取

如果我需要下載第三方庫,那我可以,但是如果它花錢,我沒有錢支付第三方庫。它需要是免費的。

這是我目前用來訪問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用於此項目。我只需要訪問存儲在裏面的數據。

+0

當然,您可以選擇使用SQL Server。 SQL Server具有一個稱爲鏈接服務器的功能,它可以讓您在SQL Server實例中「託管」DBF文件。 –

+0

@SamAxe由於PCI合規性,我無法運行單獨的服務器。我只需要使用我自己處理的文件和VB.NET的本地實例。 –

+0

[ADO.NET的優勢OLEDB提供程序](http://devzone.advantagedatabase.com/dz/webhelp/advantage8.1/mergedProjects/adsoledb/adsoledb/connection_string_parameters_(advantage_ole_db_provider).htm)聲稱與DBF/NTX文件進行通信。 –

回答

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 
+0

我下班後回家試試這個試試,並告訴你它是否成功 –

+0

因此,我已經去圖書館工作了。但是,我很確定它沒有默認查看索引文件。那麼,有沒有辦法來定義它使用的索引? –

+0

根據他們的幫助文件: 要獲得對創建和打開NTX索引文件的支持,請創建一個數據庫(在數據字典中定義),並將這些表和關聯的NTX索引文件添加到該數據庫。然後在該數據庫連接上使用這些表。 NTX索引文件將在相應的DBF表打開時自動打開。您可以使用Advantage Data Architect創建數據庫和數據字典。 http://devzone.advantagedatabase.com/dz/webhelp/advantage8.1/mergedProjects/bdp-net/bdp_net/advantage_bdp_net_connection_options.htm – EJD