簡體   English   中英

我如何檢查SqlDataReader中的變量是什么?

[英]How can i check what is variable into the SqlDataReader?

我是C#的新手,並編寫以下代碼來調用SQL Server存儲過程:

using (SqlConnection con = new SqlConnection(Connection))
{
    using (SqlCommand cmd = new SqlCommand("CheckValidbehzad", con))
    {
        cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.Add("@p_bank", SqlDbType.VarChar).Value = p_bank;
        cmd.Parameters.Add("@p_pay_date", SqlDbType.VarChar).Value = p_pay_date;
        cmd.Parameters.Add("@p_bill_id", SqlDbType.VarChar).Value = p_bill_id;
        cmd.Parameters.Add("@p_payment_id", SqlDbType.VarChar).Value = p_payment;
        cmd.Parameters.Add("@p_ref_code", SqlDbType.VarChar).Value = p_ref_code;
        cmd.Parameters.Add("@p_branch", SqlDbType.VarChar).Value = p_branch;
        cmd.Parameters.Add("@p_channel_type", SqlDbType.VarChar).Value = p_channel;
        cmd.Parameters.Add("@p_send_date", SqlDbType.VarChar).Value = p_send_date;

        con.Open();
        reader = cmd.ExecuteReader();

        while (reader.Read())
        {
            //TempCode = reader["PaymentID"].ToString();
        }
    }
}

該存儲過程有時會在結果中返回ErrorNumber ,有時會返回PaymentID 如何檢查這種情況?

if( reader has ErrorNumber field) then
    do something
else
    do something else

謝謝大家

不確定如何區分返回的這兩列-如果該列存在或缺失(取決於情況),則可以檢查該列是否存在:

while (reader.Read())
{
    try
    {
        int paymenIdPos = reader.GetOrdinal("PaymentID");

        // if found --> read payment id 
        int paymentID = reader.GetInt32(paymenIdPos);
    }
    catch(IndexOutOfRangeException)
    {
        // if "PaymentID" is not found --> read the "ERrorNumber"
        int errorCode = reader.GetInt32("ErrorNumber");
    }           
}

您可以按照marc_s的建議使用GetOrdinal進行檢查,或者像這樣:

if (reader.GetSchemaTable().Select("ColumnName = 'PaymentId'").Length > 0)
{
    //do something here with pamynet
}
else if (reader.GetSchemaTable().Select("ColumnName = 'ErrorNumber'").Length > 0)
{
     //do your stuff here with error number
}

暫無
暫無

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

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