2008-11-07 121 views
1

我已經完成了VB6和VB.NET的開發,並且我已經使用VB6中的ADODB對象來處理記錄集導航(即MoveFirst,MoveNext等方法),並且我已經使用了ADO.NET來逐行處理查詢(即對於Table.Rows中的每一行...)ADO.NET記錄導航

但是現在我似乎陷入了困境。我現在在VB.NET中構建一個程序,我需要使用舊Recordset對象的Move命令的等效功能。 VB.NET是否有某種支持此功能的對象,還是我不得不訴諸使用舊的ADODB COM對象?

編輯:爲了澄清,我希望用戶能夠瀏覽查詢向前或向後移動。循環遍歷行是一項簡單的任務。

+0

這是一個桌面應用程序或Web應用程序? – DOK 2008-11-07 18:12:48

+0

桌面。具體來說,就是處理每個月需要處理的記錄隊列,包括對數據進行可視化驗證和分析。 – smbarbour 2008-11-07 18:42:59

回答

2

有沒有必要回到過去的壞日子。如果你可以給出一個僞代碼的例子,我可以爲你翻譯爲vb.net。

這是一種通用的方式來做到這一點。

Dim ds as DataSet 

'populate your DataSet' 

For each dr as DataRow in ds.Tables(<tableIndex>).Rows 
    'Do something with the row' 

Next 

根據編輯1:用戶將導航結果,而不是查詢。所以你想要做的是a)獲取結果並僅顯示ds.Tables.Row()的當前rowindex給他們,或者b)對每個導航執行一個新的查詢(不是一個真正的表現良好的選項)。

每個評論:不,他們沒有。但用戶通常不會像這樣與數據庫進行交互式工作。您將需要獲取結果的數據集/表格,並使用按鈕從數據集/表中檢索相關行。

  • 第一行是DataTable.Rows(0)
  • 最後一行是DataTable.Rows(DataTable.Rows.Count-1)
    • 任何行中之間(存儲當前顯示在您的應用程序的rowIndex),然後調用以前
  • DataTable.Rows(currentRowIndex -1)
  • DataTable.Rows(currentRowIndex +1)爲下。
+0

具體而言,我需要表單上的4個按鈕以及狀態標籤(ADODC控件),它提供舊Recordset對象中存在的MoveFirst,MovePrevious,MoveNext和MoveLast功能。當然,他們還沒有消除這種功能。 – smbarbour 2008-11-07 18:06:44

0

在.Net中,有很多方法可以做到這一點。我喜歡的是使用DataReader,它可以返回多個記錄集。您可以使用While DataReader.Read循環訪問它的記錄。

使用DataReader的優點之一是它是一個只向前的只讀對象,所以它快速輕量。

要允許用戶瀏覽所有記錄,每次一個,您不希望在用戶導航時保持打開DataReader。您可以將DataReader記錄讀入對象。或者,您可以將記錄檢索到DataSet中,並一次顯示DataTable中的DataRows。

我會建議,如果可能的話,你一次檢索所有的記錄,如果沒有太多。這將節省對數據庫的重複呼叫。另一方面,如果有大量記錄,則可以檢索前幾個(例如10或20),並且只在用戶單擊超出初始值時才使用新的數據庫調用檢索下一組記錄組。這是懶加載。

0

下面是使用DataReader的一個簡單的例子:

  Dim cmd As New OleDb.OleDbCommand(sql, Conn) 'You can also use command parameter here 
      Dim dr As OleDb.OleDbDataReader 
      dr = cmd.ExecuteReader 

      While dr.Read 

      ‘Do something with data 
      ‘ access fields 
      dr("fieldname") 
      ‘Check for null 
      IsDBNull(dr("fieldname")) 

      End While 

      dr.Close() 
2

這一切都取決於使用情況: 如果您只需要列出一個或多個查詢的結果,你應該使用DataReader。 DOK指出,它是隻讀和前進的,所以速度很快。 http://www.startvbdotnet.com/ado/sqlserver.aspx

如果您需要導航您應該使用數據集的記錄。 http://www.c-sharpcorner.com/UploadFile/raghavnayak/DataSetsIn.NET12032005003647AM/DataSetsIn.NET.aspx

該數據集還具有「斷開連接」工作的優點,因此您可以構建所有邏輯,並且只在需要調用填充方法的數據時使用。數據集被填充,然後您可以開始使用現在與數據庫斷開連接的數據。

希望它能幫助, 布魯諾·菲格雷多 http://www.brunofigueiredo.com