想知道为什么会这样?
代码如下:
public static void main(String[] args) {
String dbName = "F:/firstdb";
String driver = "org.apache.derby.jdbc.EmbeddedDriver";
String protocol = "jdbc:derby:";
try{
Class.forName(driver).newInstance();
System.out.println("Loaded the appropriate driver");
Connection conn = DriverManager.getConnection(protocol + dbName + ";");
System.out.println("Connected to and created database " + dbName);
conn.setAutoCommit(false);
Statement stat = conn.createStatement();
String command = "update my_test set NAME='1234' where ID='03'";
stat.executeUpdate(command);
//conn.rollback();
PreparedStatement state = conn.prepareStatement("select * from my_test", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = state.executeQuery();
int i = 1;
while(rs.next()){
if(i < 4){
System.out.printf(rs.getString(1) + " ");
System.out.printf(rs.getString(2) + " ");
System.out.printf(rs.getString(3) + " ");
System.out.printf(rs.getString(4) + "\n");
i++;
}else{
rs.relative(-2);
System.out.println("finally");
System.out.printf(rs.getString(1) + " ");
System.out.printf(rs.getString(2) + " ");
System.out.printf(rs.getString(3) + " ");
System.out.printf(rs.getString(4) + "\n");
break;
}
}
}catch(Exception e){
e.printStackTrace();
}
}
结果如下:
Loaded the appropriate driver
Connected to and created database F:/firstdb
01 男 10 LiSi
02 女 20 ZhangSan
03 男 40 1234
finally
02 女 20 ZhangSan
如果把update相关语句注释掉,那么结果如下:
Loaded the appropriate driver
Connected to and created database F:/firstdb
01 男 10 LiSi
02 女 20 ZhangSan
03 男 40 123
finally
02 女 20 ZhangSan