【问题标题】:Retrieving data from a dataset从数据集中检索数据
【发布时间】:2013-08-06 16:46:27
【问题描述】:

很抱歉,如果以前有人问过这个问题,我已经尝试使用谷歌,但所有答案都无法帮助我。

我是使用数据集和使用 c# 连接数据库的初学者。我有一个数据集 usersDataset 从一个 access 2007 数据库中获得,该数据库有两个表 AdministratorsUsers。两个表都有两列 UserNamePasswordAdministrators Table 有一行数据。

现在的问题是我想检索数据集中的行。我尝试了很多东西,但它们都抛出异常。

我试过了

    DataRow rows = usersDataset1.Administrators.Rows[0];
    MessageBox.Show(rows.ToString());

也试过了

   usersDataset data = new usersDataset();
   MessageBox.Show(data.Administrators.Rows[0].ToString());

也试过了

   MessageBox.Show(usersDataset1.Tables[0].Rows[0].ToString());

以下所有代码 sn-ps 都会抛出 IndexOutofRangeException 和消息 There is no Row at Index 0

然后我尝试了

   MessageBox.Show(usersDataset1.Administrators.Rows.Count.ToString());

它显示“0”。

请问我做错了什么,我该如何纠正?

编辑: 当我将管理员从 DataSources Windom 拖到窗体并运行应用程序时。显示该行。

【问题讨论】:

  • Administrators 表没有任何行。你需要检查一下。
  • 设置断点并确保管理员表中有任何行。
  • 您是否有一段代码可以连接到数据库并在尝试从中获取数据之前填充数据集?我们能看到吗?
  • @nhrobin 我确定其中有一行。我已经使用它在 DataSources 窗口中预览了它
  • @DanielGabriel No. 在使用服务器资源管理器连接到数据库之前,我已经将该行添加到数据库中

标签: c# winforms dataset


【解决方案1】:

您当前的问题(如上一个示例所证明的)是管理员表中没有数据。也许您没有将数据正确加载到数据结构中?

附带说明,通常最好遍历表中的行,除非您始终确切知道该表将包含多少行。例如:

foreach (DataRow row in usersDataset1.Administrators.Rows)
{
  //Do stuff here...
}

【讨论】:

  • 试过了,但没有执行任何操作
  • 当我将管理员表从数据源窗口拖到表单并运行应用程序时。显示该行。
  • 仔细检查您用于填充数据集的 SQL。看起来语法是正确的,因为您没有看到错误,但也许 SQL 简单没有返回任何行。
  • @rheitzman 一针见血——如果该查询没有在数据集中放置任何行,那么就是查询错误。
猜你喜欢
  • 2016-02-14
  • 1970-01-01
  • 2018-08-11
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-17
  • 1970-01-01
相关资源
最近更新 更多