Java Derby数据库插入语句错误"没有输入参数"

时间:2017-06-22 23:52:49

标签: java database input parameters derby

我已经在网上搜索了好几天,并试图自己修复我的问题,但似乎无法解决问题:

当我尝试插入" name"和"来源"进入我的桌子,它一直在告诉我"没有输入参数"错误...请看下面的代码:

package easylauncher;

import java.beans.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class connectDB {
    static Connection c = null;
    PreparedStatement pstmt;
    Statement stmt;

    public connectDB() {
        try {
            String driver = "org.apache.derby.jdbc.EmbeddedDriver";
            Class.forName(driver);
            c = DriverManager.getConnection("jdbc:derby:C:\\Users\\benutzer\\easy");

            String insert = "INSERT into easyl(Name,Source) VALUES (?,?)";

            PreparedStatement statement = c.prepareStatement(insert);

            String NAME = "hallo";
            String SOURCE = "naaa";

            statement.setString(1, NAME);
            statement.setString(2, SOURCE);
            statement.executeUpdate();

            String selectSQL = "SELECT * from easyl";
            PreparedStatement preparedStatement = c.prepareStatement(selectSQL);
            preparedStatement.setInt(1, 1001);
            ResultSet rs = preparedStatement.executeQuery();

            rs.beforeFirst();

            while (rs.next()) {
                String name = rs.getString("Name");

                String source = rs.getString("Source");
                System.out.println(name + source);
            }

            c.close();

        } catch (ClassNotFoundException | SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static void close() throws SQLException {
        // TODO Auto-generated method stub
        c.close();
    }
}

错误:

java.sql.SQLException: No input parameters.
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedResultSet.noStateChangeException(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedPreparedStatement.setInt(Unknown Source)
    at easylauncher.connectDB.<init>(connectDB.java:59)
    at easylauncher.easylauncher$1.actionPerformed(easylauncher.java:148)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6525)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6290)
    at java.awt.Container.processEvent(Container.java:2234)
    at java.awt.Component.dispatchEventImpl(Component.java:4881)
    at java.awt.Container.dispatchEventImpl(Container.java:2292)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
    at java.awt.Container.dispatchEventImpl(Container.java:2278)
    at java.awt.Window.dispatchEventImpl(Window.java:2739)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
    at java.awt.EventQueue.access$400(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:697)
    at java.awt.EventQueue$3.run(EventQueue.java:691)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:719)
    at java.awt.EventQueue$4.run(EventQueue.java:717)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: ERROR 07009: No input parameters.
    at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
    at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
    at org.apache.derby.impl.sql.GenericParameterValueSet.checkPosition(Unknown Source)
    at org.apache.derby.impl.sql.GenericParameterValueSet.getParameterForSet(Unknown Source)
    ... 39 more

1 个答案:

答案 0 :(得分:1)

该错误与此sql相关

String selectSQL = "SELECT * from easyl";
PreparedStatement preparedStatement = c.prepareStatement(selectSQL);
preparedStatement.setInt(1,1001);

如您所见,没有查询参数或where子句

如果您想要all行,则只需删除

即可
preparedStatement.setInt(1,1001);