Conjunto de resultados de MySQL: no se ha especificado ningún valor para el parámetro 1

Resuelto Frodgers asked hace 9 años • 2 respuestas

No puedo entender qué significa este error ni cómo solucionarlo. Estoy intentando recuperar algunos datos de una de mis bases de datos, pero sigo recibiendo este mensaje de error a continuación.

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)
Frodgers avatar Jan 07 '15 04:01 Frodgers
Aceptado

Necesitas completar el parámetroPreparedStatement

preparedStatement.setLong(1, someIdentifier)
Jigar Joshi avatar Jan 06 '2015 21:01 Jigar Joshi

Quizás sea porque no configuró el parámetro para su solicitud:

SELECT * FROM mydatabase WHERE TickerID= ?

Tienes que agregar:

preparedStatement.setString(1, "youUserIdValue");

Antes de ejecutar la consulta.

También puede utilizar el parámetro con nombre:

preparedStatement = connect
        .prepareStatement("SELECT * FROM mydatabase "
                    + " WHERE TickerID=:userID");
preparedStatement.setString("userID", "youUserIdValue");
Nemolovich avatar Jan 06 '2015 21:01 Nemolovich