数据集设计者如何确定标量查询的返回类型?

Posted

技术标签:

【中文标题】数据集设计者如何确定标量查询的返回类型?【英文标题】:How does the dataset designer determine the return type of a scalar query? 【发布时间】:2011-02-08 00:53:03 【问题描述】:

我正在尝试向数据集添加标量查询。该查询非常简单,它只是在几列中添加一些十进制值并返回它们。我 100% 确信只返回一行和一列,并且它是十进制类型(SQL 货币类型)。问题是由于某种原因,生成的方法(在 .designer.cs 代码文件中)正在返回一个对象类型的值,而它应该是十进制的。奇怪的是,还有另一个标量查询具有完全相同的 SQL,但返回的却是应有的小数。

数据集设计器如何确定数据类型,我如何告诉它返回十进制?

【问题讨论】:

【参考方案1】:

首先使用数据适配器将 dataset.tables("") 的模式填充到“schematype.source”。例如:sqladp.fillschema(ds.tables(0),schematype.source)

然后填充数据集 sqladp.fill(ds.tables(0))

现在我认为它应该返回源表的数据类型。

这是你要找的吗?

【讨论】:

【参考方案2】:

不要使用标量存储过程,而是使用标量函数。数据集设计器将正确检测标量函数的数据类型。如果您在查询期间对数据进行更改,则只需要使用标量存储过程。标量函数是只读的。您还可以非常方便地将函数作为查询拖入数据集中,而无需通过向导。

如果您坚持使用存储过程或常规查询,您总是可以像这样(在 VB 中)转换结果...

    Dim ta As New DataSet1TableAdapters.QueriesTableAdapter
    Dim result As Decimal = DirectCast(ta.StoredProcedure1, Decimal)

或使用 Option Infer On

    Dim resultInfer = DirectCast(ta.StoredProcedure1, Decimal)

【讨论】:

拖动功能是一个不错的提示。在我设置标量输出时,删除它会产生 NonQuery 函数。出于某种原因,在我的情况下,Scalar 设置总是返回 null,而 NonQuery 则按预期工作....

以上是关于数据集设计者如何确定标量查询的返回类型?的主要内容,如果未能解决你的问题,请参考以下文章

如何在存储过程中直接使用另一个存储过程返回的数据集

C#中如何把Oracle数据库查询的结果集返回

强类型数据集与弱类型数据集

R语言之创建数据集

hibernate框架之-查询结果集返回类型

Django框架:模型 字段查询查询集