如何解决替换准备好的语句 OleDbCommand.Parameters
我正在尝试通过准备好的语句从控制台应用程序对我的 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","auto").Value = ricerca;
如果我为第一个字段“targa”插入一个已知值,则查找没有问题。 如果我为“自动”插入任何内容,则查找永远不会返回任何值!
问题是 '%?%' 由于单引号而被以一种奇怪的方式解释,并且它不能正确识别和设置参数。通过在查询字符串中硬编码“ricerca”变量(不使用“?”),它工作得很好:
string queryTarga = "SELECT * FROM [Codici] WHERE targa = ? OR auto LIKE '%" + ricerca + "%'";
有人知道如何设置参数吗?
解决方法
试试这个:
previous
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。