【问题标题】:Too few parameters. Expected 1. error参数太少。预期 1. 错误
【发布时间】:2014-06-09 06:11:30
【问题描述】:

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

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

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

当我执行时:

s="select * from package";

然后它就可以正常工作了。

但是表“包”的“p_name”列有什么问题...?

我的代码,

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

声明

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

打印 ddddddd=pkg5

【问题讨论】:

  • packageChange 的值是多少?
  • 这是我们要更改的包名...从下拉列表中选择(JComboBox)
  • 我的意思是变量得到了什么值?您可以尝试打印出来并分享结果吗?
  • @Mureinik 在问题中查看我的版本...

标签: java ms-access


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    相关资源
    最近更新 更多