|- Statement接口: 用於執行靜態的sql語句
|- int executeUpdate(String sql) : 執行靜態的更新sql語句(DDL,DML)
|- ResultSet executeQuery(String sql) :執行的靜態的查詢sql語句(DQL)
|-PreparedStatement接口(Statement接口的子類):用於執行預編譯sql語句
|- int executeUpdate() : 執行預編譯的更新sql語句(DDL,DML)
|-ResultSet executeQuery() : 執行預編譯的查詢sql語句(DQL)
代碼:(用DDL語句中的創建來舉例,其他的DDL語句,除了發送的sql語句不一樣之外,都一樣)
1 public class Statement_one { 2 3 // 數據庫的信息 4 // URL 5 private static String url = "jdbc:mysql://localhost:3306/day1029"; 6 // 用戶名和密碼 7 private static String user = "root"; 8 private static String password = "root"; 9 10 // 執行DDL語句(創建表為例) 11 private static void DDL() { 12 // 為了在關閉連接,在這里創建對象 13 Connection conn = null; 14 Statement stsm = null; 15 16 try { 17 // 創建驅動注冊對象 18 Class.forName("com.mysql.jdbc.Driver"); 19 20 // 獲取連接的數據庫對象 21 /* Connection */conn = DriverManager.getConnection(url, user, 22 password); 23 24 // 創建Statement對象 25 /* Statement */stsm = conn.createStatement(); 26 27 // 創建要執行的sql語句 28 String sql = "CREATE TABLE person(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(10),sex VARCHAR(5),age INT,psot VARCHAR(10),email VARCHAR(20),phone INT)"; 29 30 // 使用Statement發送該DDL語句,返回的時該sql語句所影響的行數,int類 31 int result = stsm.executeUpdate(sql); 32 } catch (Exception e) { 33 e.printStackTrace(); 34 } 35 // 最后關閉連接(后開啟的先關閉) 36 finally { 37 if (stsm != null) { 38 try { 39 stsm.close(); 40 } catch (SQLException e) { 41 // TODO Auto-generated catch block 42 e.printStackTrace(); 43 throw new RuntimeException(e); 44 } 45 } 46 if (conn != null) { 47 try { 48 conn.close(); 49 } catch (SQLException e) { 50 // TODO Auto-generated catch block 51 e.printStackTrace(); 52 throw new RuntimeException(e); 53 } 54 } 55 } 56 }
代碼:用DML的插入數據舉例
1 private static void DML() { 2 3 Connection conn = null; 4 Statement stsm = null; 5 6 try { 7 // 創建驅動獲取對象 8 Class.forName("com.mysql.jdbc.Driver"); 9 10 // 獲取要連接的數據庫對象 11 conn = DriverManager.getConnection(url, user, password); 12 13 // 創建Statement對象 14 stsm = conn.createStatement(); 15 16 // 准備要執行的sql語言 17 String sql = "INSERT INTO person (NAME,sex,age) VALUES ('小紅','女',20);"; 18 19 // 執行語句 20 stsm.executeUpdate(sql); 21 } catch (Exception e) { 22 e.printStackTrace(); 23 } finally { 24 25 if (stsm != null) { 26 try { 27 stsm.close(); 28 } catch (SQLException e) { 29 // TODO Auto-generated catch block 30 e.printStackTrace(); 31 throw new RuntimeException(e); 32 } 33 } 34 if (conn != null) { 35 try { 36 conn.close(); 37 } catch (SQLException e) { 38 // TODO Auto-generated catch block 39 e.printStackTrace(); 40 throw new RuntimeException(e); 41 } 42 } 43 44 } 45 46 }
代價:執行DQL
1 //DQL(查詢數據) 2 private static void DQL() { 3 Connection conn = null; 4 Statement stsm = null; 5 6 try{ 7 //創建驅動獲取對象 8 Class.forName("com.mysql.jdbc.Driver"); 9 10 //創建要連接的數據庫對象 11 conn = DriverManager.getConnection(url, user, password); 12 13 //創建Statement對象 14 stsm = conn.createStatement(); 15 16 //准備sql語言 17 String sql = "SELECT * FROM person;"; 18 19 //執行sql語言 20 //返回的是ResultSet,表示數據庫結果集的數據表 21 ResultSet rs = stsm.executeQuery(sql); 22 23 //打印一行數據,例:打印第二行的數據 24 25 //一:移動光標到第二行,具體看API的ResultSet 26 rs.next(); 27 rs.next(); 28 //根據列名查詢 29 int id = rs.getInt("id"); 30 String name = rs.getString("name"); 31 String sex = rs.getString("sex"); 32 //打印 33 System.out.println(id+","+name+","+sex); 34 35 36 //二:打印所有數據,利用迭代。具體查看API的ResultSet 37 /* while(rs.next()){ 38 //通過列名來查詢,列名的英文字母不分大小寫 39 int id = rs.getInt("id"); 40 String name = rs.getString("name"); 41 String sex = rs.getString("sex"); 42 System.out.println(id+","+name+","+sex); 43 44 }*/ 45 46 }