C#中的参数SQL不起作用

时间:2015-04-16 13:54:25

标签: c# sql sql-server

我有这个代码而且不起作用。有谁知道为什么?

它没有返回任何数据,但如果在SQL Server中运行查询,它将返回数据。

using (SqlConnection connection = new SqlConnection(_dbContext.GetConnectionString()))
{
    using (SqlCommand command = new SqlCommand())
    {
        StringBuilder stringQuery = new StringBuilder();
        stringQuery.Append(" SELECT cd_material, ds_material");
        stringQuery.Append(" FROM tbl_materiais");
        stringQuery.Append(" WHERE ds_material like @Name");

        command.Parameters.AddWithValue("@Name", "%" + name + "%");
        command.CommandText = stringQuery.ToString();
        command.CommandType = System.Data.CommandType.Text;
        command.Connection = connection;

        connection.Open();

        using (SqlDataReader reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                _product = new ProductSell();
                ((IProduct)_product).ID = reader.GetFieldValue<int>(0);
                ((IProduct)_product).Name = reader.GetFieldValue<string>(1);
                listProduct.ToList<IProduct>().Add(_product);
            }
        }
    }
} 

2 个答案:

答案 0 :(得分:2)

什么是listProduct,为什么称它为ToList<>()

listProduct.ToList<IProduct>()返回List<IProduct>的新实例,该实例在此行执行后会被遗忘。在此返回列表上调用.Add(_product)不会影响listProduct

答案 1 :(得分:0)

我的问题留在这里

while (reader.Read())
        {
         DoSomething();
        }

reader.Read()从不被读取,我的表很简单,只有属性:cd_material(int),ds_material(varchar)。并且不会触发异常。 这个查询:

SELECT cd_material, ds_material FROM tbl_materiais WHERE ds_material = '%produto%' 

如果在所有者数据库(sql management)

中,则返回许多行