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