【问题标题】:GetRows method created by dataset returns null数据集创建的 GetRows 方法返回 null
【发布时间】:2018-01-24 15:52:08
【问题描述】:

我正在使用 SQLite 和数据集。在我的数据库中,我有相互引用的表。让我们称它们为 Table1、Table2、...这是我将用作示例的 EER 图的表示:

我以 Table1Row 的形式从数据集中获取数据,并且该对象具有非常有用的生成方法 Table2Row[] table1Row.GetTable2Rows() 和生成的 Table3Row 参数,如果您只能对 Table3 有一个引用。但是如果我调用这个方法,我得到的结果是一个空集合并且参数为空。所有其他属性都是正确的,我很确定表格填写正确。

我的选择查询很简单:

SELECT * FROM table1 WHERE key = @key;

但即使我使用预定义的 getData,问题仍然存在。之后,我使用 TableAdapter 来获取正确的行:

Table1DataTable table1DataTable = table1TableAdapter.GetDataByKey();
return table1DataTable.FindByKey(key);

这个问题很难找到解决办法,因为生成的方法的名字总是不同的。

感谢您的帮助

编辑: 这是生成的方法:

    public virtual DataSet.Table1DataTable GetDataByKey(long key) {
        this.Adapter.SelectCommand = this.CommandCollection[1];
        this.Adapter.SelectCommand.Parameters[0].Value = ((long)(key));
        DataSet.Table1DataTable dataTable = new DataSet.Table1DataTable();
        this.Adapter.Fill(dataTable);
        return dataTable;
    }

【问题讨论】:

  • GetRows method created by dataset returns null 我想你可能忘记在帖子中包含该代码。
  • 不,我只是没有发现这部分很有用,因为标准的 GetData 方法也不起作用我不认为这是问题所在。我认为更多的是整个方法是错误的,或者在获取数据后我缺少一个额外的步骤

标签: c# ado.net dataset


【解决方案1】:

我相信我已经找到了解决方案。您需要使用相同的数据集填充其他表,而不是使用 getData 方法。然后它是这样工作的:

        DataSetTableAdapters.Table1TableAdapter table1TableAdapter = new DataSetTableAdapters.Table1TableAdapter ();
        table1TableAdapter.FillByKey(dataset.Table1,key);

        DataSetTableAdapters.Table2TableAdapter table2TableAdapter = new DataSetTableAdapters.Table2TableAdapter();
        table2TableAdapter.Fill(dataset.Table2);

        DataSetTableAdapters.Table3TableAdapter table3TableAdapter = new DataSetTableAdapters.Table3TableAdapter();
        table3TableAdapter.Fill(dataset.Table3);

        return dataset.Table1.FindBykey(key);

现在我要做的就是优化它,这样我就不会从表 2 和表 3 中获取我不需要的所有数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 2017-06-05
    • 2021-03-08
    • 1970-01-01
    相关资源
    最近更新 更多