java.sql.SQLException:对空结果集的非法操作。当查询只返回1行时

时间:2016-12-04 03:18:05

标签: java mysql jdbc

在这段代码中我试图从id为lopp变量获取一行 并将其打印成基于计数创建的标签 虽然count小于数据库中的总行数,但是当我在mysql中执行它时返回正确的ans。 但是当我在最后一行使用rs.getstring("概念名称")来获取"概念名称"的内容时列我得到空结果集错误。

Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/niitdb","root","");

for(pos=0; pos<7; pos++){

     SQL = "SELECT `concept name` FROM `concepts " +course+ "` where `concept id` = " + pos+1;   
     Statement stmt = con.createStatement();
     rs = stmt.executeQuery(SQL);
     rs.next();
     Cname[cnt] = new JLabel(rs.getString("concept name")); // error is on this line 
}

1 个答案:

答案 0 :(得分:1)

JDBC驱动程序可能无法正确处理空白列名。我会尝试它

SELECT `concept name` as concept_name FROM ...

然后

if (rs.next())
{
    Cname[cnt] = new JLabel(rs.getString("concept_name"));
}

因为你不应该在没有测试结果的情况下调用rs.next(),并且如果它是真的那么只能继续获取列值。