簡體   English   中英

為什么在執行時沒有返回結果?

[英]Why Is this returning no results when executed?

SqlConnection conn = getConnection();
SqlCommand cmd = new SqlCommand();

cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SP_PSLA_SEARCH"; //The stored procedure gets added
cmd.CommandTimeout = 0;
cmd.Connection = conn;

// Start adding the parameters of the stored procedure
cmd.Parameters.AddWithValue("@usrnm", thisUser.Username);

int constit = 0;

if (thisUser.Constituencies.Count > 0)
{
    foreach (KeyValuePair<int, string> kp in thisUser.Constituencies)
    {
        if (kp.Value == ddlConstituency.SelectedValue.ToString())
        {
            constit = kp.Key;
            break;
        }
    }
}

cmd.Parameters.AddWithValue("@cnstncy", constit);

string pdval = null;
int valtype = 0;

if (rbsearchradios.SelectedIndex == 0)
{
    try
    {
        pdval = searchVal;
        cmd.Parameters.AddWithValue("@Search", DBNull.Value);
        cmd.Parameters.AddWithValue("@pd", int.Parse(pdval));
        cmd.Parameters.AddWithValue("@type", valtype);
    }
    catch
    {
        System.Web.UI.ScriptManager.RegisterStartupScript(this, this.GetType(), "stop", "alert('Invalid PD Number Supplied! Please Provide A Valid Submission.');", true);
        return;
    }
}
else
{
    valtype = 1;
    cmd.Parameters.AddWithValue("@Search", searchVal);
    cmd.Parameters.AddWithValue("@pd", DBNull.Value);
    cmd.Parameters.AddWithValue("@type", valtype);
}

cmd.Parameters.AddWithValue("@app", 1);

conn.Open();                        

// Creates Dataadapter for execution
SqlDataAdapter dp2 = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();

dp2.Fill(ds, "name");

我正在嘗試存儲過程的參數,並使該存儲過程執行並將結果存儲到數據集中,但是我什么也沒得到。 沒有例外,只是存儲過程沒有結果。

這是存儲過程:

DECLARE @return_value int

EXEC    @return_value = [dbo].[SP_PSLA_SEARCH] 
            @usrnm = N'tstone',
            @cnstncy = 55,
            @Search = N'primary',
            @pd = NULL,
            @type = 1,
            @app = 1

SELECT  'Return Value' = @return_value
GO

解決方法:

  1. 確保具有每個參數的值,並直接對Sql Server Management Studio中的數據庫執行相同的查詢。
  2. 檢查您是否正確使用了數據集的結果(代碼中不清楚)

通常,您還可以嘗試簡化代碼並使代碼更清晰:

  • 具有return且if (rbsearchradios.SelectedIndex == 0)可以在開始時移動的塊,因此創建SqlCommand然后中斷就沒有意義了
  • 如果SP僅返回單個值,則可以使用ExecuteScalar()方法,該方法更快,更直接。

暫無
暫無

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

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