簡體   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