【发布时间】:2021-02-21 15:10:59
【问题描述】:
我正在尝试通过准备好的语句从控制台应用程序对我的 MS Access DB 执行简单查询。
查询尝试在“targa”字段或“auto”字段中查找所需值,以简化用户界面,仅使用一个研究标签。
//grab field from GUI
string ricerca = Ricerca.Text;
string queryTarga = "SELECT * FROM [Codici] WHERE targa = ? OR auto LIKE '%?%'";
command = new OleDbCommand(queryTarga, con);
command.Parameters.Add("@p1", OleDbType.VarChar,ricerca.Length,"targa").Value = ricerca;
command.Parameters.Add("@p2", OleDbType.VarChar, ricerca.Length,"auto").Value = ricerca;
如果我为第一个字段“targa”插入一个已知值,则查找不会出现任何问题。 如果我为“auto”插入任何内容,则查找永远不会返回任何值!
问题是 '%?%' 由于单引号而被以一种奇怪的方式解释,并且它没有正确识别和设置参数。通过在查询字符串中硬编码“ricerca”变量(不使用'?')它工作得很好:
string queryTarga = "SELECT * FROM [Codici] WHERE targa = ? OR auto LIKE '%" + ricerca + "%'";
有人知道如何设置参数吗?
【问题讨论】:
-
LIKE '%' + ? +'%'也许?
标签: c# ms-access-2010 prepared-statement oledb sql-like