【问题标题】:How to get value of numeric datatype in ado.net from SQL Server如何从 SQL Server 获取 ado.net 中数字数据类型的值
【发布时间】:2013-11-22 11:14:53
【问题描述】:

我正在使用 ADO.NET 编写应用程序,并希望选择一个 numeric(9, 2) 类型的值。但是我不知道如何使用这个值,我的意思是我无法转换这个值。

那么它应该被转换为哪种数据类型。

Decimal decimalLastModifiedWaitingForApprovalcurrency = 0;
decimalLastModifiedWaitingForApprovalcurrency = (Decimal)(cmd.ExecuteScalar());

这个我也试过了

Convert.ToDecimal(cmd.ExecuteScalar());

我考虑过可以将其转换为Decimal,但它给出的错误。

那么 C# 中 SQL 服务器数字数据类型的数字等价物是什么?

【问题讨论】:

  • 你得到的错误是什么?

标签: c# asp.net sql-server ado.net


【解决方案1】:

由于您使用的是ExecuteScalar(),它返回的值是object。如果您不太确定它选择了哪种 CLI 类型,请查看:

object value = cmd.ExecuteScalar();
Debug.WriteLine(value.GetType().Name);

【讨论】:

  • 伟大的马克。欢迎回来:)
  • @Murali 我曾经离开过吗?
  • 没有。但我喜欢阅读您的答案并学习 c#、LINQ。 :) 很长一段时间后我才读到你的帖子.. 非常感谢:)
  • 感谢 Marc,我找到了问题所在。实际上我想从第 3 列获取值,但是 executescalar 从行返回第 1 列。这就是为什么它给出错误演员表的错误。如果我想在这种情况下从行中获取第三列值,如何使用 executescalar 获取该值?你有想法吗
  • @vivekjain ExecuteScalar only 返回第一列、第一行、第一个网格;如果您需要更多内容,请使用不同的查询 API - 可能是 ExecuteReader,或者可能会为您包装它的“dapper”之类的东西
【解决方案2】:

仅限Decimal。您使用了正确的数据类型。

查看完整列表SQL Server Data Type Mappings

【讨论】:

    【解决方案3】:

    试试Convert.ToDouble(cmd.ExecuteScalar());,如果这不起作用,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      • 1970-01-01
      • 2015-10-15
      • 1970-01-01
      相关资源
      最近更新 更多