簡體   English   中英

對象為空使用SqlCommand存儲過程到對象

[英]Object is null using SqlCommand stored procedure to Object

我正在嘗試執行 SQL 存儲過程並將結果收集在List<T> 我沒有收到錯誤,但列表始終為空。 存儲過程產生了 100 多條記錄,所以我知道它不應該為空,但我不知道為什么它為空。

這是我的代碼:

List<TicketExtendedFieldModel> list = new List<TicketExtendedFieldModel>();

using (SqlCommand cmd = new SqlCommand("GetExtendedFields", con))
{
    con.Open();
    cmd.CommandType = CommandType.StoredProcedure;

    list = cmd.ExecuteScalar() as List<TicketExtendedFieldModel>;
    con.Close();
}

非常感謝任何幫助。

您的列表為空,因為cmd.ExecuteScalar()它不是List<TicketExtendedFieldModel>類型。 使用ExecuteReader更改ExecuteScalar

您正在使用SqlCommand.ExecuteScalar()執行查詢,並返回查詢返回的結果集中第一行的第一列 其他列或行將被忽略

那么現在我們將如何獲得 StoredProcedure 返回的 100 條記錄的列表?

您可以使用SqlCommand.ExecuteReader() [有更多方法可以做到這一點]

List<TicketExtendedFieldModel> list = new List<TicketExtendedFieldModel>();

using (SqlCommand cmd = new SqlCommand("GetExtendedFields", con))
{
   con.Open();
   cmd.CommandType = CommandType.StoredProcedure;

   SqlDataReader rdr = cmd.ExecuteReader();
   while (rdr.Read())
   {
      TicketExtendedFieldModel obj = new TicketExtendedFieldModel();
      // your properties from TicketExtendedFieldModel and then
      // obj.name = Convert.ToString(rdr["name"]);
      list.Add(obj);
   }
   con.Close();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM