java.sql.SQLException:ResultSet中没有当前行

时间:2016-09-09 17:05:24

标签: java mysql

我正在使用jtbs.jdbc.Driver来验证代理号是否存储在我的MySQL数据库中。

问题在于,每当我尝试从表中复制窗帘行并将其放入我的ResultSet时,错误就是说 there is no current row in the ResultSet

错误位于第31行String value = result.getString(i);

我一直在网上寻找答案,但它们似乎都没有帮助我解决我的具体困境。

更新日期 到目前为止,我添加了一个while(result.next()),它基本上没有任何while(result.next())剂量没有执行。

这是我的代码!!!

    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();
    }
}

1 个答案:

答案 0 :(得分:3)

在致电result.getString(i)

之前,您需要致电result.next()
  

将光标从当前位置向前移动一行。一个   ResultSet光标最初位于第一行之前;   首先调用方法接下来使第一行成为当前行;该   第二次调用使第二行成为当前行,依此类推。

据我所知,您的查询仅返回2列,因此如果您致电result.getString(i),请确保i1或{ {1}}否则你会得到一个例外。