繁体   English   中英

如何从SQL Server数据库中的AC文本框中读取1条记录?

[英]How to read 1 record from a sql server database into a c# textbox?

我想这样做(在Form3上):

sqlcon.Open();
            string selectQuery = "SELECT * FROM InvoiceTable where id = @id";
            SqlCommand sqlcmd = new SqlCommand(selectQuery, sqlcon);
            sqldr = sqlcmd.ExecuteReader();
            while(sqldr.Read())
            {
                textbox1 = Max value of TotalCostColumn.value
                or
                textbox1 = Latest value of TotalCostColumn.value
                or
                textbox1 = 2nd row of TotalCostColumn.value
            }

我在此表格上没有任何datagridview 我确实在Form1上有一个datagridview ,它是实际的发票表格。 Form3是可让用户确认最终应支付多少客户费用的确认表。 我希望数据库中的TotalCostColumn的值在Form3的相关文本框中传输。

textbox1 = TotalCostColumn.value的最大值

如果这是您的要求,那么为什么不按赞构建查询

SELECT max(TotalCostColumn) FROM InvoiceTable where id = @id

然后,应调用ExecuteScalar()而不是使用ExecuteReader() ExecuteScalar() ,该函数将返回单个值

这是通过ExecuteScalar获取最大值的方法:

string selectQuery = "SELECT MAX(TotalCostColumn) FROM InvoiceTable where id = @id";
var sqlcmd = new SqlCommand(selectQuery, sqlcon);
var result = sqlcmd.ExecuteScalar();
return int.Parse(result.ToString());

MAX将确保您仅从表中获得一行。 要获取最新值,您必须对表进行排序(我假设有交易日期),并添加TOP 1仅获得第一行。 (尽管ExecuteScalar会忽略除第一行的第一个字段以外的所有内容,但是没有必要返回您不需要的数据)

有两种方法可以获取第二行。 一种是使用数据读取器并跳过第一行。 另一个与SQL:

SELECT TOP 1 FROM 
(
  SELECT TOP 2 TotalCost FROM InvoiceTable where id = @id ORDER BY TotalCost DESC
) ORDER BY TotalCost ASC

在此,内部查询将获取两行数据,并按最大的项目首先对它们进行排序,而外部查询则选择两者中的较低值。

您需要编写一个存储过程,该过程接受id的值

存储过程定义如下

create proc selectmax(@id int)
as begin
select max(TotalCostColumn) FROM InvoiceTable where id = @id
end

并使用Disconnected Model如下调用它, 因此不需要sqlcon.open()

SqlCommand sqlcmd = new SqlCommand(selectmax, sqlcon);
sqlcmd.CommandType=CommandType.StoredProcedure
SqlDataAdapter adapter= new SqlDataAdapter(sqlcmd);
      DataSet value=new DataSet();
adapter.Fill(value);

这是使用Ado.net断开模型的实现

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM