【问题标题】:C# datarow getchildrow returns no rowsC# datarow getchildrow 不返回任何行
【发布时间】:2012-10-27 19:02:06
【问题描述】:

在我的数据库中有三个表 R(id,num) RT(Rid,Tid) T(id,小时) (R 和 RT) 和 (T 和 RT) 之间存在一对多的关系。 我正在使用数据集来访问我的数据库。

现在我正在使用下面的代码来检索数据并返回空列表:

foreach (mDataSet.RTRow rtRow in rRow.GetRTRows())
      console.writeln(rtRow.Tid);//never reaches this line

插入值的代码:

rTableAdapter.insert(r.id,num);
tTableAdapter.insert(t.id,hour);
rtTableAdapter.insert(r.id,t.id);

有人知道我现在遇到的问题是什么

【问题讨论】:

  • 如果不是因为db数据确实是空的,我们需要再看一些代码。
  • 通过在 foreach 语句上设置断点来检查 Watch 窗口中 rRow.GetRTRows() 的值并确保它不为空
  • 告诉我们您用来获取记录的选择查询。希望您使用 dataadpatter 来填充您的数据集。请分享它,你是怎么做的。并且可能还需要您的这三个表的架构来全面了解问题
  • 感谢您的回复。 (nieve) DB 不是空的。 (Mohsen) 它返回一个空列表。 (Sami) 是的,我正在使用数据适配器来填充我的数据集。 GetRTRow() 是一个给定的方法,我没有为此编写任何查询。我分享了更多关于如何将数据插入这些表的代码。

标签: c# database datatable dataset foreign-keys


【解决方案1】:

首先明确的问题:mDataSet 是否包含表RT 中的数据?在您的评论中,您声明数据库不是空的,但数据集也不是空的吗?

其次,当我遇到这个问题时,它最终不得不对设计器中定义的关系做一些事情。当您双击两个表RRT之间的线时(一侧带有键符号和另一侧带有无穷大符号的线),您可以检查属性。只需确保两个表中的正确列都参与了外键关系。

顺便说一句:你真的用这么短的名字来命名你的表和变量名还是只是为了提供一个例子?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 2019-04-04
    相关资源
    最近更新 更多