首页 > 解决方案 > 尝试 catch 块不适用于 sql

问题描述

我有以下java代码:

ResultSet rs2 = stmt.executeQuery("select * from teacher");  

        try
        {rs2.getInt("fee");
          System.out.println("found");
          stmt.executeUpdate("alter table teacher drop fee  ");
        }catch(SQLException e){
            System.out.println("not found");
            System.err.print(e);
            stmt.executeUpdate("alter table teacher add fee int ");
        } 

似乎从未调用过尝试。

标签: javasqltry-catch

解决方案


您需要执行rs2.next()以获取第一行(和后续行)。如:

ResultSet rs2 = stmt.executeQuery("select * from teacher");  

//rs2.next(); // reads one row!
  rs2.first();


try {
  rs2.getInt("fee");
  System.out.println("found");
  stmt.executeUpdate("alter table teacher drop fee  ");
} catch(SQLException e) {
  System.out.println("not found");
  System.err.print(e);
  stmt.executeUpdate("alter table teacher add fee int ");
} 

推荐阅读