簡體   English   中英

將列表作為 Sql 表類型參數傳遞

[英]Pass List as Sql Table Type Parameter

我正在嘗試將我的班級列表作為DbParameter傳遞。 可能表類型是在我的存儲過程中定義的。

現在,我不知道如何將List<>傳遞到存儲過程中,因為定義了只接受Tables的表類型。

在這里,我提出我的方法。

public static AddCustomer(List<Customer> customer)
{
      List<DbParameter> lstDbParameters = null;

      try
      {
        #region Set the Parameters
        lstDbParameters = new List<DbParameter>();
        SqlParameter dbAcceptedBillDetails = new SqlParameter("@Customers",
                                                             customer);

        dbAcceptedBillDetails.SqlDbType = SqlDbType.Structured;
        lstDbParameters.Add(dbAcceptedBillDetails as DbParameter);
        lstDbParameters.Add(CDDAC.MakeDbParameter(dbProvider,
                                                  "@ErrorMessage",
                                                  DbType.String,
                                                  null,
                                                  500,
                                                  ParameterDirection.Output));
        #endregion

        //Call the static ExecuteNonQuery method.
        CDDAC.ExecuteNonQuery(dbProvider,
                              connectionString,
                              "AddCustomer",
                              CommandType.StoredProcedure,
                              lstDbParameters.ToArray());
      }
      catch (Exception ex)
      {
        throw;
      }
    }

我收到這樣的錯誤:

無法將參數值從 List 1 to a IEnumerable 1。

我知道我可以將此列表轉換為DataTable ,然后將其傳遞到存儲過程中,但這似乎很耗時。 :(

最后,我自己得到了答案。 但是在查找過程中,我發現無法直接將List<>轉換為IEnumerable<>

但是這篇文章對於通過object或者List<Obj>進行數據交易非常有用

http://www.c-sharpcorner.com/UploadFile/pchandraker/passing-table-valued-parameter-to-stored-procedu-part-2/

很有用。 :)

我知道這個問題有點老了,但我找到了另一種通過將列表轉換為數據表來將列表傳遞給表類型參數的方法。 所以你的代碼可以是這樣的:

public static AddCustomer(DataTable customer)
{
      try
      {
        DbCommand dbcomm = CDDAC.GetStoredProcCommand("name your stored procedure");
        CDDAC.AdInParameter(dbcomm, "@Param", SqlDbType.Structured, customer); //@param is an input parameter from your storedprocedure
        CDDAC.ExecuteNonQuery(dbcomm);
      }
      catch (Exception ex)
      {
        throw;
      }
    }

只需確保您已在數據庫中為數據客戶創建類型。

暫無
暫無

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

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