c#中的SQL参数由于某种原因无法正常工作

时间:2014-02-14 00:56:29

标签: c# sql .net sqlparameters

我在c#中使用以下代码,它试图通过两个给定参数过滤数据。但是,它不起作用。你有什么建议吗?

谢谢, Vancho

这是代码

 public void TestQuery()
    {
        SqlCommand sqlCommand = new SqlCommand(GetQuery());
        //sqlCommand.Parameters.Add("@SKU", SqlDbType.VarChar).Value = txtSKU.Text;
        //sqlCommand.Parameters.Add("@ProductName", SqlDbType.NVarChar).Value = txtProductName.Text;

        sqlCommand.Parameters.AddWithValue("@SKU", txtSKU.Text);
        sqlCommand.Parameters.AddWithValue("@ProWductName", txtProductName.Text);

        //sqlCommand.Parameters.Add("@SKU", System.Data.SqlDbType.NVarChar).Value = txtSKU.Text;
        //sqlCommand.Parameters.Add("@ProductName", System.Data.SqlDbType.NVarChar).Value = txtProductName.Text;

        //sqlCommand.Parameters["@SKU"].Value = txtSKU.Text;
        //sqlCommand.Parameters["@ProductName"].Value = txtProductName.Text;

        //execute query and other stuff

        conn.Open();

        SqlDataAdapter da = new SqlDataAdapter(GetQuery(), conn);
        DataTable dt = new DataTable();
        da.Fill(dt);

        dt.TableName = "Product Setup";
        dataGridView1.DataSource = dt;

        conn.Close();
    }
    private string GetQuery()
    {
        System.Text.StringBuilder sb = 
            new System.Text.StringBuilder(@"SELECT ProductID, BarCode, SKU, ProductName, SecondaryIDNumber, ModelIDNumber, ProductDescription
        FROM Products WHERE ProductId is not null ");



        if (txtSKU.Text != null)
            sb.Append("AND SKU = @SKU ");

        if (txtProductName.Text != null)
            sb.Append("AND ProductName = @ProductName");
        return sb.ToString();
    }

1 个答案:

答案 0 :(得分:3)

您正在设置适配器命令,但是您没有为参数赋值:

SqlDataAdapter da = new SqlDataAdapter(GetQuery(), conn);

而是使用它:

SqlCommand sqlCommand = new SqlCommand(GetQuery());
sqlCommand.Parameters.AddWithValue("@SKU", txtSKU.Text);
sqlCommand.Parameters.AddWithValue("@ProductName", txtProductName.Text);
SqlDataAdapter da = new SqlDataAdapter(sqlCommand, conn);

首先获取您的查询,为您的参数赋值,然后将该查询传递给DataAdapter

您还可以在使用AddWithValue

之前检查参数
if(sqlCommand.CommandText.Contains("@SKU"))
       sqlCommand.Parameters.AddWithValue("@SKU", txtSKU.Text);

if(sqlCommand.CommandText.Contains("@ProductName"))
       sqlCommand.Parameters.AddWithValue("@ProductName",txtProductName.Text);