【问题标题】:MySQL Result Set - No value specified for parameter 1MySQL 结果集 - 未为参数 1 指定值
【发布时间】:2015-01-06 21:46:00
【问题描述】:

我不知道这个错误是什么意思或如何解决它。我正在尝试从我的一个数据库中检索一些数据,但一直遇到以下错误消息。

preparedStatement = connect
            .prepareStatement("SELECT * FROM mydatabase "
                        + " WHERE TickerID=?");
            resultSet = preparedStatement.executeQuery(); //where it says the error is, line 132
            while(resultSet.next())
            {
                aIDTA = resultSet.getInt("AccountID");
                nameTA = resultSet.getString("Name");
                CashBalance = resultSet.getDouble("CashBalance");
                TradeFeeBuy = resultSet.getDouble("TradeFeeBuy");
                TradeFeeSell = resultSet.getDouble("TradeFeeSell");
                AssetsBalance = resultSet.getDouble("AssetsBalance");
            }



Exception in thread "main" java.sql.SQLException: No value specified for parameter 1
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:996)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:935)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:924)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:870)
    at com.mysql.jdbc.PreparedStatement.checkAllParametersSet(PreparedStatement.java:2281)
    at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2261)
    at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2191)
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2004)
    at BuyAndSell.BuyAndSell(BuyAndSell.java:132)
    at Main.main(Main.java:21)

【问题讨论】:

标签: java jdbc


【解决方案1】:

PreparedStatement需要填写参数

preparedStatement.setLong(1, someIdentifier)

【讨论】:

    【解决方案2】:

    可能是因为你没有为你的请求设置参数:

    SELECT * FROM mydatabase WHERE TickerID= ?
    

    你必须添加:

    preparedStatement.setString(1, "youUserIdValue");
    

    在执行查询之前。

    你也可以使用命名参数:

    preparedStatement = connect
            .prepareStatement("SELECT * FROM mydatabase "
                        + " WHERE TickerID=:userID");
    preparedStatement.setString("userID", "youUserIdValue");
    

    【讨论】:

    • JDBC 没有命名参数,尽管供应商特定的实现可能有这个,所以你的第二个例子不能通过标准 java.sql.PreparedStatement 接口工作
    猜你喜欢
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多