C# 如何使用ExecuteScalar()获取值并将其提供给textbox.text?

C# 如何使用ExecuteScalar()获取值并将其提供给textbox.text?,c#,sql-server,ado.net,return,executescalar,C#,Sql Server,Ado.net,Return,Executescalar,这是我的桌子: CREATE TABLE [dbo].[InvoiceTable] ( [Id] INT IDENTITY (1, 1) NOT NULL, [CodeColumn] NVARCHAR (50) NOT NULL, [NameColumn] NVARCHAR (50) NOT NULL, [QTYColumn] INT NULL

这是我的桌子:

CREATE TABLE [dbo].[InvoiceTable] (
    [Id]                 INT           IDENTITY (1, 1) NOT NULL,
    [CodeColumn]         NVARCHAR (50) NOT NULL,
    [NameColumn]         NVARCHAR (50) NOT NULL,
    [QTYColumn]          INT           NULL,
    [TotalQTYColumn]     INT           NULL,
    [UnitCostColumn]     INT           NOT NULL,
    [DiscountRateColumn] FLOAT (53)    DEFAULT ((0)) NULL,
    [RowTotalColumn]     AS            (([QTYColumn]*[UnitCostColumn])*((1)-[DiscountRateColumn])) PERSISTED,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);
我有发票和确认单。用户在第一个表单中选择所需的商品,并在第二个表单中确认他/她应支付的金额。我希望我的程序在我的TotalCostTextBox.text中以文本形式显示
sum(rowtottalcolumn)
的值。 我编写了以下代码:

private int ConfirmForm_Load(object sender, EventArgs e)
{
    string selectQuery = "SELECT Sum(RowTotalColumn) FROM InvoiceTable";
    var sqlcmd = new SqlCommand(selectQuery, sqlcon);
    var result = sqlcmd.ExecuteScalar();
    return int.Parse(result.ToString());
    TotalCostTextBox1.Text = result.ToString();
当我放入
TotalCostTextBox1.Text=result.ToString()时
返回后
它会大叫

检测到无法访问的代码

当我把它放在
return
之前时,
TotalCostTextBox1
不显示任何内容


请告诉我如何用该值填充TotalCostTextBox1。不是关于return语句。

方法的返回类型是int,这就是为什么会出现错误。您可以将方法返回类型更改为并删除return关键字:

private void ConfirmForm_Load

检测到无法访问的代码

这是因为您在
return
语句之后分配给您的文本框,该语句永远不会到达。它是一个事件处理程序,因此应该是
void
类型,因为事件处理程序不返回任何内容

private void ConfirmForm_Load(object sender, EventArgs e)
{
    string selectQuery = "SELECT Sum(RowTotalColumn) FROM InvoiceTable";
    var sqlcmd = new SqlCommand(selectQuery, sqlcon);
    var result = sqlcmd.ExecuteScalar();                
    this.TotalCostTextBox1.Text = result.ToString();

考虑到
TotalCostTextBox1
TotalCostTextBox1
控件的实例名,您需要在返回前将其放置在赋值语句下方

TotalCostTextBox1.Text = result.ToString();
您的最终代码应如下所示:

private void ConfirmForm_Load(object sender, EventArgs e)
{
    string selectQuery = "SELECT Sum(RowTotalColumn) FROM InvoiceTable";
    var sqlcmd = new SqlCommand(selectQuery, sqlcon);
    var result = sqlcmd.ExecuteScalar();
    TotalCostTextBox1.Text = result.ToString();
    //return int.Parse(result.ToString());
}
您还需要使用ConfirmForm_Load函数检查事件绑定。要验证这一点,请检查ConfirmForm.Designer.cs中是否有以下行

this.Load += new System.EventHandler(this.ConfirmForm_Load);

因为您在TotalCostTextBox1.Text=result.ToString()之前使用了return;当您编写return current block close时,这应该有助于解决您的问题-|在查看设计器后,将int更改为void并删除return。cs是否有这样的代码
code
this.Load+=new System.EventHandler(this.ConfirmForm\u Load)<代码>代码
不适用于添加此code@erdiyılmaz谢谢你的评论在我脑海中突然出现了一些与你的评论有关的东西,我修复了它,现在我的问题解决了。谢谢:)好的,我明白了,没关系,我无意中在designer.cs中操纵了一些东西,现在它可以工作了。谢谢你…好的,我明白了,没关系,我无意中在designer.cs中操纵了一些东西,现在它可以工作了。谢谢你,伙计。。。
this.Load += new System.EventHandler(this.ConfirmForm_Load);