【问题标题】:prepared statement not working with and operator准备好的语句不适用于 and 运算符
【发布时间】:2014-09-02 20:30:40
【问题描述】:

我正在尝试从我的 Java 中的 MS Access 数据库中提取一些值。我在以下查询中遇到困难 -

PreparedStatement p = c.prepareStatement("select GroupMembers from group_data where GroupName = ? and GroupOwnerID = ?");
p.setString(1,gsel);
p.setInt(2,empid);

它给了我一个错误 - 预期的参数太少 3

但是当我使用 -

PreparedStatement p = c.prepareStatement("select GroupMembers from group_data where         GroupName = ?");
p.setString(1,gsel);

效果很好。

我的表架构是:

GroupName    GroupMembers   GroupOwnerID
text         text           number

第一个查询有什么问题?

这是堆栈跟踪

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Too few paramet
ers. Expected 3.
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6964)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7121)
        at sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:3156)
        at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(JdbcOdbcPreparedState
ment.java:215)
        at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeQuery(JdbcOdbcPrepared
Statement.java:90)
        at ntpc.Sms$1$4$3.actionPerformed(Sms.java:743)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:20
18)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.jav
a:2341)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
.java:402)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259
)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL
istener.java:252)
        at java.awt.Component.processMouseEvent(Component.java:6505)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
        at java.awt.Component.processEvent(Component.java:6270)
        at java.awt.Container.processEvent(Container.java:2229)
        at java.awt.Component.dispatchEventImpl(Component.java:4861)
        at java.awt.Container.dispatchEventImpl(Container.java:2287)
        at java.awt.Component.dispatchEvent(Component.java:4687)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832
)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)

        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
        at java.awt.Container.dispatchEventImpl(Container.java:2273)
        at java.awt.Window.dispatchEventImpl(Window.java:2719)
        at java.awt.Component.dispatchEvent(Component.java:4687)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
        at java.awt.EventQueue.access$200(EventQueue.java:103)
        at java.awt.EventQueue$3.run(EventQueue.java:694)
        at java.awt.EventQueue$3.run(EventQueue.java:692)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
main.java:76)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
main.java:87)
        at java.awt.EventQueue$4.run(EventQueue.java:708)
        at java.awt.EventQueue$4.run(EventQueue.java:706)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
main.java:76)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:242)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:161)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:150)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)

        at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

【问题讨论】:

  • 使用p.setString(1,1); p.setInt(2,1);有意义吗?我想知道empidgsel 是否为空
  • 不,它们不为空...我想根据两个约束获得结果集...
  • 能否请您添加整个 Stacktrace 以及更多代码(执行语句并获取返回参数)?
  • 我添加了堆栈跟踪
  • 问题是我无法根据两个条件获取值

标签: java ms-access jdbc


【解决方案1】:

【讨论】:

  • 我刚刚尝试过,使用 and ... 的查询正在使用删除选项,但没有选择
猜你喜欢
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-27
  • 2017-03-13
  • 1970-01-01
相关资源
最近更新 更多