替换准备好的语句 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 + "%'";

有人知道如何设置参数吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)