如何使用 ExecuteScalar() 获取一个值并将其提供给您的 textbox.text?

How to use ExecuteScalar() to get a value and give it to your textbox.text?

这是我的 table:

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)
);

我有一张发票表格和一张确认表格。用户在第一个表格中选择想要的商品,并在第二个表格中确认he/she应该支付多少。我希望我的程序在我的 TotalCostTextBox.Text 中将 sum(RowTotalColumn) 的值显示为文本。 我写了下面的代码:

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 之后时,它会大喊

Unreachable code detected

当我把它放在 return 之前时,TotalCostTextBox1 什么也没显示...

请告诉我如何用值填充 TotalCostTextBox1。与 return 声明无关。

您方法的 return 类型是 int,这就是您出错的原因。您可以将方法 return 类型更改为 void 并删除 return 关键字:

private void ConfirmForm_Load

var result = sqlcmd.ExecuteScalar();
int x = int.Parse(result.ToString());
TotalCostTextBox1.Text = x.ToString();

Unreachable code detected

那是因为您在永远无法到达的 return 语句之后分配给您的文本框。它是一个事件处理程序,因此应该是 void 类型,因为事件处理程序没有 return 任何东西。

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();

考虑到 TotalCostTextBox1TotalCostTextBox1 控件的实例名称

您需要在return

之前放置下面的赋值语句
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);