如果条件是字符串与否,如何签入

时间:2014-04-15 02:57:29

标签: asp.net sql-server

在我的搜索功能中,我需要将两个参数传递给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();
            }

1 个答案:

答案 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);