带有搜索变量参数的Npgsql查询返回空结果C#Postgres

时间:2017-06-27 11:39:28

标签: c# postgresql npgsql

我使用Npgsql查询数据库表并在我的页面/视图上显示结果。 代码工作正常,没有where子句和参数,因为它将表中的所有行都放到视图上。现在我正在尝试使用搜索字符串变量(如果用户输入字符串,那么给我包含这个字符串的表记录)。我的代码如下

string searchValue = TempData["String"].ToString();

var model = new List<ProductViewModel>();      

NpgsqlConnection connection = new NpgsqlConnection
     ("Host=192.168.0.52;Database=test;Username=test;Password=test");
connection.Open();
NpgsqlCommand cmd = new NpgsqlCommand
     ("SELECT * FROM q_product WHERE q_description like @string", connection);

        //lets include our paramater
cmd.Parameters.Add("@string", NpgsqlTypes.NpgsqlDbType.Text);
cmd.Parameters["@string"].Value = searchValue;
cmd.Parameters.AddWithValue(searchValue);

NpgsqlDataReader dr = cmd.ExecuteReader();

while (dr.Read())
{
    var prod = new ProductViewModel();
    prod.q_description = dr["q_description"].ToString();
    prod.q_barcode = dr["q_barcode"].ToString();               

    model.Add(prod);  
}

var pagedProduct = new PaginatedSearch<ProductViewModel>(model, pageIndex, pageSize);

return View(pagedProduct);

当我只有

时,记录会被罚款
SELECT * FROM q_product

但是在包含where子句和我的搜索字符串变量之后,我得到一个空页面。我的代码中我做错了什么?

1 个答案:

答案 0 :(得分:1)

您可能希望在查询中使用} else if (nummer(drukKnop)) { if (display === "0") display = drukKnop; else if (nummer(display)) display = display + drukKnop; else display = drukKnop; } 来使用like运算符。

%