[Microsoft] [ODBC Microsoft Access驱动程序]参数太少。预期1。
这是我执行此查询时遇到的错误:
s="select * from package where p_name like "+packageChange;
当我执行时:
s="select * from package";
然后就可以了
但是表“ package”的“ p_name”列有什么问题...?
我的代码
res=start.executeQuery("select * from package where p_name like "+packageChange);
该声明
System.out.println("ddddddd="+packageChange);
打印ddddddd = pkg5
最佳答案
这是Java代码吗?如果是这样,请使用绑定变量:
Connection conn = ...;
PreparedStatement st = conn.prepareStatement("select * from package where p_name like ?");
st.setString(1, packageChange);
res = st.executeQuery();
否则,您将受SQL injection的约束。
在原始代码中,将参数括在撇号中:
res=start.executeQuery("select * from package where p_name like '"+packageChange + "'");
但我鼓励您不要这样做:您应该在
packageChange
变量中检查撇号和换行符(也许还有更多)-对其进行清理,例如here。