参数太少。预期1.错误

时间:2014-06-09 06:11:30

标签: java ms-access

  

[Microsoft] [ODBC Microsoft Access Driver]参数太少。预计1。

这是我执行此查询时遇到的错误:

s="select * from package where p_name like "+packageChange;

执行时:

s="select * from package";

然后它运作正常。

但问题是" p_name"表格列#34;包" ...?

我的代码,

res=start.executeQuery("select * from package where p_name like "+packageChange);

声明

System.out.println("ddddddd="+packageChange);

打印ddddddd = pkg5

1 个答案:

答案 0 :(得分:1)

这是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