【问题标题】:Fetch single value into Label from database从数据库中获取单个值到标签中
【发布时间】:2016-07-30 14:47:39
【问题描述】:

我有一个名为 Label1 的标签。我正在尝试使用过程从数据库中提取一个值并分配给它。但这不起作用。

处理结果 -

Mean_time
----------
528

调用PROC的函数

public DataSet getMeanTime()
    {
        DataSet dsMeanTime = new DataSet();
        dsMeanTime = SqlHelper.ExecuteDataset(sqlConn, CommandType.StoredProcedure, "sp_getMeanWorkingTime");
        return dsMeanTime;
    }

网页控制-

DataSet dsChartDetails = new DataSet();

helper hr = new helper();
protected void Page_Load(object sender, EventArgs e)
{
    GenerateChart();
}

private void GenerateChart()
{
    dsChartDetails = hr.getMeanTime();
    Label1.Text = WHAT TO WRITE HERE ;
}

如果我试试这个

Label1.text = dsChartDetails.Tables[0].Rows[0].Field<string>(0).ToString();

我收到此错误 -

无法将“System.Int32”类型的对象转换为“System.String”类型。

我的目标是使用过程调用使用标签简单地显示数据库中的值。

【问题讨论】:

  • 与您的问题无关,但避免将sp_ 用于存储过程。此前缀用于标识系统存储过程,在搜索它们时处理方式略有不同。如果你想要一个前缀,我可能会建议 usp_ 用于“用户存储过程”。
  • 我会说“sp_”不是问题,但使用数据集返回单个值是一种矫枉过正。使用 ExecuteScalar 而不是 ExecuteDataset。它在执行方面会更快,在编码方面会更容易。

标签: c# sql asp.net webforms web-controls


【解决方案1】:

错误提示该字段是int,因此以int 访问它:

dsChartDetails.Tables[0].Rows[0].Field<int>(0).ToString();

无论如何,在string 上调用.ToString() 并没有多大意义。

【讨论】:

  • 奇怪我之前尝试过类似的查询,但没有奏效。这有帮助。谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-17
  • 2018-01-02
  • 1970-01-01
相关资源
最近更新 更多