2011-06-16 92 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连接。