我正在使用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();
}
}
答案 0 :(得分:3)
在致电result.getString(i)
result.next()
将光标从当前位置向前移动一行。一个
ResultSet
光标最初位于第一行之前; 首先调用方法接下来使第一行成为当前行;该 第二次调用使第二行成为当前行,依此类推。
据我所知,您的查询仅返回2列,因此如果您致电result.getString(i)
,请确保i
为1
或{ {1}}否则你会得到一个例外。