Npgsqlを使用してデータベーステーブルをクエリし、ページ/ビューに結果を表示しています。 コードは、テーブルからビューにすべての行を取得するので、where句とパラメータなしで正常に動作します。今、私は検索文字列変数を組み込むことを試みています(ユーザーが文字列を入力してから、この文字列を含むテーブルレコードを与えてください)。次のように私のコードがある空の結果を返す検索変数パラメータを持つNpgsqlクエリC#Postgres
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句と私の検索文字列変数を含めた後、私は空のページを取得しています。これに対して私のコードで何が間違っていますか?
'searchValue'の内容は何ですか?また、['LIKE'](https://www.postgresql.org/docs/8.3/static/functions-matching.html)のドキュメントを見てください。 – 0xCAFEBABE
のデバッグsearchValueは、いつも検索ボックスに入力したテキスト(期待される動作)です。 whileループをスキップし、where句が追加されるとpagedProductにまっすぐ進みます。私はドキュメンテーションを見ていきます。 – LavsTo
[パラメータを使用したnpgsqlの同様のステートメントの可能な重複](https://stackoverflow.com/questions/13950279/like-statement-for-npgsql-using-parameter) – JGH