2011-06-16 57 views
0

我已經找回這是使用的MS Access(現有系統的信息:'()訪問到MS Access用C#

所以我添加了現有項目(MDB)的項目,它。我創建對應於我有所有表數據集

一旦我做到了這一點,我試圖訪問這些數據:

 ClsDataSet dataSet = new ClsDataSet(); 

     foreach (ClsDataSet.DOCDOCUMENTSRow docdocumentsRow in dataSet.DOCDOCUMENTS) 
     { 
      System.Console.WriteLine(docdocumentsRow.nom_document+"-->"+docdocumentsRow.nom_fichier); 
     } 
     System.Console.ReadLine(); 

只有測試...

但不進入foreach,它似乎認爲桌子是空的?我直接進入ReadLine();

那麼我錯過了什麼?我沒有任何異常。

我應該加載表還是類似的東西?

謝謝!

+0

可能的重複[爲什麼我會使用生成的代碼從數據庫中獲得空結果?](http://stackoverflow.com/questions/6329781/why-do-i-get-empty-results-using-generated-code -from-db/6330052#6330052) – InBetween 2011-06-16 08:49:16

回答

3

在您發佈的代碼段中,沒有任何TableAdapter填充您創建的數據集中的模式。 DataSet只是你在db端的一個表示,所以它只是db表的結構,並不直接包含數據。

要用數據庫記錄填寫您的模式,您必須調用Fill關聯的TableAdapter的方法。通常,當您在DataSet模式(.xsd)中拖放某個數據庫表時,它是由Visual Studio Designer自動創建的。

+0

好吧,我以爲它像Entity Framework一樣工作。當我在數據集中選擇了我想要的表時,我的DataSet架構已由VS生成。我發現了一個「DBInfoTableAdapter」,我可以在其上調用「Fill」方法,但是我找不到應該放入的東西。我認爲這是我可以在dataSet.DBInfo中找到的東西?但它的一個集合,我不知道哪些數據我應該放在那裏 – J4N 2011-06-16 08:56:10

+0

對於每個表應該有一個相應的TableAdapter。所以,當你想填充一個表時,只需調用其相關的適配器'Fill'方法作爲參數傳遞,就像'myDataSet.myTable'一樣。請閱讀MSDN上的這篇文章:http://msdn.microsoft.com/en-us/library/ms171920。aspx – 2011-06-16 08:59:24

+0

我想通了,事情是,每個表有一個適配器:)所以我找到了一個DOCDOCUMENTSTableAdapter對象,它接受我的dataSet.DOCDOCUMENTS。 最後一個問題,這是什麼影響,它只是一種綁定,或者它將數據庫的全部內容放在對象中?如果我只想處理某些類型的行(例如將列A設置爲「XYZ」),該怎麼辦?非常感謝你的幫助! – J4N 2011-06-16 09:06:19

0

只需創建使用構造函數設置的數據集尚未檢索數據。您需要代碼填充(=>從MDB文件中選擇行並將它們存儲在數據集實例中)數據集首先。

最簡單的方法是創建到MDB文件的ODBC連接,並使用OdbcConnection和各自的OdbsCommand實例創建實際連接和「SELECT」語句。

編輯
您可以連接到直接使用表適配器設計MDB文件。您將不需要創建一個ODBC連接。