带有搜索变量参数的 Npgsql 查询返回空结果 C# Postgres
Npgsql query with search variable parameter returning empty result C# Postgres
我正在使用 Npgsql 查询数据库 table 并在我的 page/view 上显示结果。 代码在没有 where 子句和参数的情况下工作正常,因为它将 table 中的所有行获取到视图中。 现在我正在尝试合并一个搜索字符串变量(如果用户输入字符串,然后给我包含该字符串的 table 条记录)。我的代码如下
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 子句和我的搜索字符串变量之后,我得到了一个空白页面。我在我的代码中做错了什么?
您可能想在查询中使用 %
以利用 like 运算符。
NpgsqlCommand cmd = new NpgsqlCommand
("SELECT * FROM q_product WHERE q_description like '%' || @string || '%'", connection);
我正在使用 Npgsql 查询数据库 table 并在我的 page/view 上显示结果。 代码在没有 where 子句和参数的情况下工作正常,因为它将 table 中的所有行获取到视图中。 现在我正在尝试合并一个搜索字符串变量(如果用户输入字符串,然后给我包含该字符串的 table 条记录)。我的代码如下
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 子句和我的搜索字符串变量之后,我得到了一个空白页面。我在我的代码中做错了什么?
您可能想在查询中使用 %
以利用 like 运算符。
NpgsqlCommand cmd = new NpgsqlCommand
("SELECT * FROM q_product WHERE q_description like '%' || @string || '%'", connection);