Isaac Dixon
Isaac Dixon

Reputation: 23

java.sql.SQLException: No current row in the ResultSet

I'm using the jtbs.jdbc.Driver to verify that a proxy number is stored in my MySQL database.

The problem is that whenever I try to copy the curtain row from the table and put it in my ResultSet, the error says that there is no current row in the ResultSet

The error is at line 31 String value = result.getString(i);

i have been looking all over the web for answers but none of them seem to help my specific predicament.

UP DATE so far i added a while(result.next()) and it basically dose nothing the while(result.next()) dose not execute.

Here's my code!!!

    package dataBata;


import java.util.ArrayList;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JOptionPane;


public class apples {

    ArrayList<String> myList = new ArrayList<String>();
    String proxNumber = "2435847564";
    String usersName = "user";
    String password = "pass";

    public void wrightMatchdb(){
        Connection conn = null;
        String url = "jdbc:jtds:sqlserver://localhost:1433/model";

    try{
        Class.forName("net.sourceforge.jtds.jdbc.Driver");
        conn = DriverManager.getConnection(url, usersName, password);
        Statement statement = conn.createStatement();
        ResultSet result = statement.executeQuery("select replace(PROXID , ' ','') PROXID ,FIRST_NAME from OKWC_IDCARDS where PROXID = '" + proxNumber + "'");
        System.out.println("hello");
        while(result.next()){
            for(int i=1;i<=6;i++){
                System.out.println("hello2");
                String value = result.getString(i);

                if(result.getString(i) != null){
                    value = value.replace(" ","");
                    myList.add(value);
                }
                String userProx=myList.get(i);
                String userFName=myList.get(i+1);
                JOptionPane.showMessageDialog(null, userProx + " has a match for", "hi " + userFName, JOptionPane.DEFAULT_OPTION);
            }
            System.out.println("hello3");
        };
        System.out.println("hello4");
        statement.close();
        }
        catch (Exception e){
            e.printStackTrace(); 
        }
        finally {
            if (conn != null) try { conn.close(); } catch(Exception e) {}
        }
    }

    public static void main(String[] args){
        apples A = new apples();
        A.wrightMatchdb();
    }
}

Upvotes: 1

Views: 4313

Answers (1)

Nicolas Filotto
Nicolas Filotto

Reputation: 44965

You need to call result.next() before calling result.getString(i)

Moves the cursor forward one row from its current position. A ResultSet cursor is initially positioned before the first row; the first call to the method next makes the first row the current row; the second call makes the second row the current row, and so on.


As far as I can see, your query returns only 2 columns so if you call result.getString(i), make sure that i is either 1 or 2 otherwise you will get an exception.

Upvotes: 4

Related Questions