[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

08-27 11:00