2012-07-31 35 views
0

我有視覺狐狸親數據庫與成千上萬的行。我正在使用oledb從fox pro獲取數據並導出(在完成一些計算和格式化之後)到sql server.I曾使用數據集一次填充2-3個數據表(相關表)。oledb,視覺狐狸親和c#

第一個問題是內存使用非常高,因爲數據集很大。我想減少內存佔用。對此有任何建議。

所以我已經決定在time.How獲取幾行做我使用OLEDB命令,這樣我就可以根據所有獲取的如1-20和20-40再等

回答

1

讀取行這裏的評論和HatSoft的代碼就是我認爲你正在尋找的東西。這是僞代碼,這意味着它不會編譯,但應該給你一個從這裏開始的好主意。

int NumberOfRecordsToRetrieve = 10000; 
int StartRecordNumber = 1; 
bool EndOfFile = false; 

string queryString = "SELECT OrderID, CustomerID FROM Orders WHERE RECNO() BETWEEN @StartRecordNumber AND @EndRecordNumber"; 

While (!EndOfFile) 
{ 
    using (OleDbConnection connection = new OleDbConnection(connectionString)) 
    { 
     OleDbCommand command = new OleDbCommand(queryString, connection); 
     command.Parameters.Add(new OleDbParameter("@StartRecordNumber", StartRecordNumber)); 
     command.Parameters.Add(new OleDbParameter("@EndRecordNumber", StartRecordNumber + NumberOfRecordsToRetrieve)); 

     connection.Open(); 
     OleDbDataReader reader = command.ExecuteReader(); 

      EndOfFile = true; 
      while (reader.Read()) 
      { 
       EndOfFile = false 

       //Retrieve records here and do whatever process you wish to do 
      } 
      reader.Close(); 

      StartRecordNumber += NumberOfRecordsToRetrieve; 
    } 
} 
+0

但有一個小問題。當有內部連接時,recno()似乎不工作。 – arjun 2012-08-03 11:41:22

+0

@arjun你能否提供一個你如何試圖在內部連接中使用RECNO()的例子? – 2012-08-22 13:13:07

0
string queryString = "SELECT OrderID, CustomerID FROM Orders WHERE ORDERID >= @StartOrderID AND ORDERID <= @EndOrderID"; 

    using (OleDbConnection connection = new OleDbConnection(connectionString)) 
    { 
     OleDbCommand command = new OleDbCommand(queryString, connection); 
     command.Parameters.Add(new OleDbParameter("@StartOrderID", "PASS THE VALUE HERE")); 
     command.Parameters.Add(new OleDbParameter("@EndOrderID", "PASS THE VALUE HERE")); 

     connection.Open(); 
     OleDbDataReader reader = command.ExecuteReader(); 

     while (reader.Read()) 
     { 
//Retrieve records here 
     } 
     reader.Close(); 
    } 
+0

我的大多數表沒有主鍵id。我們可以在查詢中像sql server一樣使用類似row_number()的東西。 – arjun 2012-08-01 01:10:23

+0

@arjun在你的情況是你可以 – HatSoft 2012-08-01 07:44:07

+0

你能告訴我怎麼做嗎? – arjun 2012-08-01 08:22:10

相關問題