我正在运行以下代码以从数据库中获取数据。。
public String getCurrentSeason(String leagueName)
{
String qry = "Select * from KHAN.LeagueSeason where league_name = '"+leagueName+"' AND end_Date IS NULL";
try{
ResultSet rs = stmt.executeQuery(qry);
if(rs.next());
{
String s = rs.getString(1);
return s;
}
}
catch(SQLException err)
{
System.out.println(err.getMessage());
System.exit(0);
}
return "";
}
虽然我使用rs.next(),但它仍然给出一个错误"在当前光标位置的无效操作"。有人能指出这个错误吗。我是java编程的初学者。假设连接和所有其他东西都在类构造函数中初始化
如果给定一个不作为参数存在的leagueName
,就会发生这种情况。
问题是if语句后面的分号——因为空语句在Java中是合法的,所以实际上已经实现了以下逻辑:如果ResultSet
有另一个元素,则不执行任何操作。之后,无论你是否什么都没做(当然,这有点毫无意义),你都会打开另一个块,并尝试从ResultSet
中检索一个字符串。如果它是空的,你会得到你描述的错误。
长话短说——去掉if
后面的分号,你就可以了:
public String getCurrentSeason(String leagueName)
{
String qry = "Select * from KHAN.LeagueSeason where league_name = '"+leagueName+"' AND end_Date IS NULL";
try{
ResultSet rs = stmt.executeQuery(qry);
if(rs.next()) // note: no semicolon here
{
String s = rs.getString(1);
return s;
}
}
catch(SQLException err)
{
System.out.println(err.getMessage());
System.exit(0);
}
return "";
}