Ng Sharma
Ng Sharma

Reputation: 2192

Exception in thread "main" java.sql.SQLException: No value specified for parameter 1

When I execute the program, it shows the error: No value specified for parameter 1

The error occurs in this statement: 'rowSet.execute();'

public static void main(String[] args) throws SQLException {
    // Create a RowSet Instance
    RowSet rowSet = new com.sun.rowset.JdbcRowSetImpl();

    // Establish the Databse Connection
    rowSet.setUrl("jdbc:mysql://localhost:3306/jmysql?autoReconnect=false&useSSL=false");
    rowSet.setUsername("root");
    rowSet.setPassword("root!@#$Mysql2016");
    rowSet.setCommand("SELECT userpassword FROM user WHERE userid = ? "
            + " AND userName = ? ");
    //Execute the Sql Command
    rowSet.execute(); 

    rowSet.setInt("userid", 415);
    rowSet.setString("UserName", "[email protected]");

     // Display the UserPassword
    System.out.print("Password : " + rowSet.getString(3));

    // Close the Connetion
    rowSet.close();
}

Exception in thread "main" java.sql.SQLException: No value specified for parameter 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919) at com.mysql.jdbc.PreparedStatement.checkAllParametersSet(PreparedStatement.java:2611) at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2586) at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2510) at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2259) at com.sun.rowset.JdbcRowSetImpl.execute(JdbcRowSetImpl.java:567) at com.advjdbc.database.chapter.RowSetPerParepedStatement.main(RowSetPerParepedStatement.java:30)

Upvotes: 1

Views: 1714

Answers (1)

ujulu
ujulu

Reputation: 3309

The reason why you are getting the exception is that you are calling the execute() method before setting all the parameters. So you have to set the params as follows (before the execute() method):

rowSet.setUrl("jdbc:mysql://localhost:3306/jmysql?autoReconnect=false& useSSL=false");
rowSet.setUsername("root");
rowSet.setPassword("root!@#$Mysql2016");
rowSet.setCommand("SELECT userpassword FROM user WHERE userid = ? AND userName = ? ");

// set the param values
rowSet.setInt(1, 415);
rowSet.setString(2, "[email protected]");

//Execute the Sql Command
rowSet.execute(); 

Upvotes: 2

Related Questions