在我的搜索功能中,我需要将两个参数传递给SP.Here我保留了条件。但是我没有获得所需的输出。这是我的代码。任何人帮助我
if (IsValid)
{
DataTable dt = new DataTable();
SqlConnection con = new SqlConnection(myStr);
SqlCommand cmd = new SqlCommand("spRedemItem", con);
cmd.CommandType = CommandType.StoredProcedure;
if(Parameter.Equals(DropDownList2.SelectedValue=="CustomerCode"))
{
cmd.Parameters.AddWithValue("@CustomerCode", txtkey2.Text);
}
else
{
cmd.Parameters.AddWithValue("@CustomerName", txtkey2.Text);
}
SqlDataAdapter sda = new SqlDataAdapter(cmd);
Session["CustomerName"] = dt;
con.Open();
DataSet ds = new DataSet();
sda.Fill(ds);
dt = ds.Tables[0];
Label10.Text = dt.Rows[0]["ItemCode"].ToString();
Label11.Text = dt.Rows[0]["CustomerName"].ToString();
Label12.Text = dt.Rows[0]["PointsNeeded"].ToString();
// Session["CustomerName"] = dt;
View.DataBind();
con.Close();
}
答案 0 :(得分:0)
如果您的sproc有两个参数,那么每次都需要传递两个参数。通常,您可以编写SQL代码,以便只需将NULL传递给您要忽略的任何参数,例如: WHERE (@Column1 IS NULL OR Column1 = @Column1)
。如果要忽略该参数,则可以使用DBNull.Value
作为参数值。但是,您无法使用AddWithValue
,因为无法推断数据类型。
E.g。
command.CommandText = @"SELECT *
FROM MyTable
WHERE (@C1 IS NULL OR C1 = @C1)
AND (@C2 IS NULL OR C2 = @C2)";
command.Parameters.Add("@C1", SqlDbType.Int).Value = (someValue == "int"
? Convert.ToInt32(myTextBox.Text)
: (object) DBNull.Value);
command.Parameters.Add("@C2", SqlDbType.VarChar, 50).Value = (someValue == "string"
? myTextBox.Text
: (object) DBNull.Value);