Java 在Db中正确写入,但;对空结果集的非法操作。”;Sql错误

Java 在Db中正确写入,但;对空结果集的非法操作。”;Sql错误,java,mysql,sql-server,Java,Mysql,Sql Server,我正在sql数据库上进行插入。发生了一件奇怪的事情:当我运行downer代码时,DB被正确写入,但编译器给我一个错误 java.sql.SQLException:对空结果集的非法操作。 我已经搜索过了,我发现这可能是由于JDBC驱动程序的一个错误(但我不这么认为)。所以我决定在这里发帖 首先,我为您提供数据库表: 表格主题 +------------------+----------------+------------+ | subjectCode | SubjectName

我正在sql数据库上进行
插入。发生了一件奇怪的事情:当我运行downer代码时,DB被正确写入,但编译器给我一个错误

java.sql.SQLException:对空结果集的非法操作。

我已经搜索过了,我发现这可能是由于JDBC驱动程序的一个错误(但我不这么认为)。所以我决定在这里发帖

首先,我为您提供数据库表:

表格主题

+------------------+----------------+------------+
| subjectCode      | SubjectName    | teacherCode|
+------------------+----------------+------------+
| 1                | Maths          | 10         |
| 2                | English        | 20         |
| 3                | Greek          | 30         |
+------------------+----------------+------------+
表类

+------------------+----------------+
| ClassCode        | ClassName      |
+------------------+----------------+
| 1                | Class1         |
| 2                | Class2         |
| 3                | Class3         |
+------------------+----------------+
表Lessure(行和列是时间表的行(小时)和列(天),它们单独确定时间表中的课程;例如:小时1是一天中的第一个小时)

代码:

重要:方法
writelson
处于
循环中。我没有在一个周期内测试过这段代码,它可以正常工作。你认为为什么


解决方案:问题是在方法
writeLesson
的循环中,我向它传递了“空白”字符串,导致了错误(这就是为什么在DB上写入操作有效,但存在错误)。

您是否检查了select语句中的结果集?其中一个不是空的吗?如果rs为空,rs.getInt()将抛出此异常(在本例中,rs.next()返回false)

您好,谢谢您的帮助。我解释一下:我已经分别尝试了代码的三个部分,它们都能工作。但是如果我试着写,什么都没有,那就是错误。唯一的区别是,在本机代码中,
writelson
方法处于循环中,因此多次调用它您的评论启发了我(或者8小时前我太累了…)。问题是,我认为“空白”单元格没有课,我想把它写在DB上。这也解释了在DB上编写代码的原因。非常感谢。
+------------------+----------------+------------+-----------+-------+-------+
| LessonCode       | SubjectCode    | teacherCode| ClassCode |  Day  |  Hour |
+------------------+----------------+------------+-----------+-------+-------+
| 1                | James          | 10         |     1     |   1   |   1   |
| 2                | John           | 20         |     2     |   1   |   2   |
| 3                | Frank          | 30         |     3     |   1   |   3   |
+------------------+----------------+------------+-----------+-------+-------+
private void writeLesson(String subjectName, String className, int column, int row)
{
    try{
        int subjCode;
        String query="SELECT subjectCode from subject WHERE subjectName='"+subjectName+"';";
        rs = st.executeQuery(query);
        rs.next();
        subjCode  = rs.getInt("subjectCode");


        int teacherCode;
        String query1="SELECT teacherCode from subject WHERE subjectName='"+subjectName+"';";
        rs = st.executeQuery(query1);
        rs.next();
        teacherCode = rs.getInt("teacherCode");

        int classCode;
        String query2="SELECT classCode from class WHERE className='"+className+"';";
        rs = st.executeQuery(query2);
        rs.next();
        ClassCode = rs.getInt("classCode");


        String query3 ="INSERT INTO lesson (subjCode, classCode, teacherCode, day, hour) "
                + "VALUES ('" + subjCode + "',"
                + "'" + classCode + "',"
                + "'" + teacherCode + "',"
                + "'" + column + "',"
                + "'" + row + "');";
        PreparedStatement statement=con.prepareStatement(query3);
        statement.executeUpdate();
        statement.close();   
    }

    catch (Exception ex){
        System.out.println("Error db: "+ex);