標籤:中繼資料 可滾動的結果集 pstmt conn
中繼資料 Meta Data
/* * 中繼資料 Meta Data */public class Test03 { Connection conn = null; PreparedStatement pstmt=null; ResultSet rs = null; public void test(){ conn=DBUtil.getConnection(); try { DatabaseMetaData dbmd=conn.getMetaData(); //擷取資料庫中繼資料 System.out.println(dbmd.getDatabaseProductName()); System.out.println(dbmd.getDatabaseProductVersion()); System.out.println(dbmd.getDriverName()); System.out.println(dbmd.getDriverVersion()); pstmt=conn.prepareStatement("select username,password from user"); rs=pstmt.executeQuery(); //擷取結果集中繼資料 ResultSetMetaData rsmd=rs.getMetaData(); System.out.println(rsmd.getColumnCount()); System.out.println(rsmd.getColumnName(1)); System.out.println(rsmd.getColumnName(2)); } catch (SQLException e) { e.printStackTrace(); } } public static void main(String[] args) { new Test03().test(); }}
可滾動的結果集
/* * 可滾動的結果集 */public class Test04 { Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; // 讀取到指定使用者時插入一條記錄 public void test01() { String sql = "select * from user"; try { conn = DBUtil.getConnection(); pstmt = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); rs = pstmt.executeQuery(); // 可滾動結果集,可以更新表 while (rs.next()) { String name = rs.getString("username"); if (name.equals("tom")) {// 判斷當前讀取的使用者 // 將游標移動到插入行,插入行實際上就是一個緩衝區,用來準備資料 rs.moveToInsertRow(); rs.updateString("username", "alex"); rs.updateString("password", "999"); // 提交緩衝區中的資料 rs.insertRow(); System.out.println("插入使用者成功!"); // 將游標移動到當前行,即插入記錄前的那條記錄 rs.moveToCurrentRow(); } System.out.println(rs.getInt(1) + "," + rs.getString(2) + "," + rs.getString(3)); } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.closeAll(rs, pstmt, conn); } } // 刪除指定使用者 public void test02() { String sql = "select * from user"; try { conn = DBUtil.getConnection(); pstmt = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); rs = pstmt.executeQuery(); while (rs.next()) { String name = rs.getString("username"); if (name.equals("bbb")) { rs.deleteRow();// 刪除當前行 //rs.next();// 刪除後將游標下移 System.out.println("刪除使用者成功"); } System.out.println(rs.getInt(1) + "," + rs.getString(2) + "," + rs.getString(3)); } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.closeAll(rs, pstmt, conn); } } //移動遊標 public void test03() { String sql = "select * from user"; try { conn = DBUtil.getConnection(); pstmt = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); rs = pstmt.executeQuery(); while (rs.next()) { String name = rs.getString("username"); if (name.equals("s001")) { rs.relative(3); } System.out.println(rs.getInt(1) + "," + rs.getString(2) + "," + rs.getString(3)); } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.closeAll(rs, pstmt, conn); } } public static void main(String[] args) { new Test04().test03(); }}
JAVA學習筆記(五十五)- 中繼資料 MetaData和可滾動的結果集