JavaEE學習中,JDBC、DriverManger類、Connection介面、Statement介面、ResultSet介面(java 學習中的小記錄),javaeedrivermanger
JavaEE學習中,JDBC、DriverManger類、Connection介面、Statement介面、ResultSet介面(java 學習中的小記錄)
作者:王可利(Star·星星)
JDBC(Java Data Base Connectivity,java資料庫連接)
是Java資料庫連接技術的簡稱,提供串連各種常用資料庫的能力。
1.DriverManger類
依據資料庫的不同,管理JDBC驅動
2.Connection 介面
負責串連資料庫並擔任傳送資料的任務,如:串連資料庫,要有一個通道,那麼這個通道就是Connection。
3.Statement 介面
由 Connection 產生、負責執行SQL語句,如:有了通道了,我開個車過去就是Statement,執行SQL語句。
4.ResultSet 介面
負責儲存Statement執行後所產生的查詢結果,如,開了車過去了,把東西拿回來,那個東西就是ResultSet。
JDBC的工作原理
JDBC API 主要功能:與資料庫建立串連、執行SQL語句、處理結果。
JDBC工作原理
1.載入JDBC驅動(Class.forName(驅動類))
2.串連資料庫(地址、帳號、密碼)Connection
3.擷取到對象,執行SQL語句,返回結果。Statement
4.使用完了釋放對象 (.close)
下面進行代碼對資料庫的 增、查 、刪、改、crud
執行個體一代碼如下:(增加)
快速鍵:快捷匯入包:Ctrl + shift + O
1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.Statement; 6 //執行個體一:純Java代碼 串連資料庫 7 public class star { 8 public static void main(String[] args) { 9 Connection conn = null;10 Statement stmt = null;//聲明Statement變數11 12 String sql = "INSERT INTO star_studyone (id,name,sex,age) VALUES ('1', '星星', '男', '12');";13 14 //1.載入驅動15 try {16 Class.forName("com.mysql.jdbc.Driver");//載入驅動類17 } catch (Exception e) {18 }19 20 //2.獲得連線物件21 try {22 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/starstudy", "root", "123456");//串連到資料庫23 System.out.println("串連成功!");24 } catch (Exception e) {25 26 }27 28 //3.擷取到Statement對象29 try {30 stmt = conn.createStatement();//擷取到Statement對象31 stmt.execute(sql);//Statemen對象執行 SQL語句32 } catch (Exception e) {33 34 }35 36 //4.關閉對象37 //先添加的對象後關閉,後添加的對象先關閉38 try {39 stmt.close();40 conn.close();41 } catch (Exception e) {42 }43 }44 }
執行個體二代碼如下:(查詢)
1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.Statement; 4 import java.sql.ResultSet; 5 6 //執行個體二: 7 public class star { 8 public static void main(String[] args) { 9 Connection conn = null;10 Statement stmt = null;//聲明Statement變數11 ResultSet rs =null; 12 13 String sql = "SELECT *FROM star_studyone";14 15 try {16 //載入驅動17 Class.forName("com.mysql.jdbc.Driver");18 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/starstudy","root", "123456");19 stmt = conn.createStatement();20 rs = stmt.executeQuery(sql);//返回查詢21 22 //遍曆rs 23 //rs.next();指標下移 返回的是布爾值24 25 while (rs.next()) {26 //在MYSQL資料庫中索引從1開始27 // System.out.println(rs.getInt(1)+"\t");28 // System.out.println(rs.getString(2)+"\t");29 // System.out.println(rs.getString("sex")+"\t");30 // System.out.println(rs.getInt("age")+"\t");31 32 System.out.println(rs.getObject(1)+"\t");33 System.out.println(rs.getObject(2)+"\t");34 System.out.println(rs.getObject("sex")+"\t");35 System.out.println(rs.getObject("age")+"\t");36 37 }38 System.out.println("=============================");39 40 } catch (Exception e) {41 42 }finally{43 //如果他是空,才可以關44 try {45 if (null != rs) {46 rs.close();47 }48 if (null != stmt) {49 stmt.close();50 }51 if (null != conn) {52 conn.close();53 }54 55 } catch (Exception e2) {56 57 } 58 } 59 }60 }
執行個體代碼三:(改、刪除)
1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.Statement; 5 6 //執行個體三: 7 public class star { 8 public static void main(String[] args) { 9 Connection conn = null;10 Statement stmt = null;//聲明Statement變數11 12 //String sql = "UPDATE star_studyone SET name='星星哥哥' WHERE id = '5' ";//SQL改變語句13 String sql = "DELETE FROM star_studyone WHERE id = '5' ";//SQL刪除語句14 15 try {16 //載入驅動17 Class.forName("com.mysql.jdbc.Driver");18 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/starstudy","root", "123456");19 stmt = conn.createStatement();20 stmt.executeUpdate(sql);21 22 System.out.println("=========成功串連=========");23 24 } catch (Exception e) {25 26 }finally{27 //如果他是空,才可以關28 try {29 if (null != stmt) {30 stmt.close();31 }32 if (null != conn) {33 conn.close();34 }35 36 } catch (Exception e2) {37 38 } 39 } 40 }41 }
自己犯的錯誤總結:
1. 導包不要導錯。導這類的包 import java.sql.Connection;
2. String url = "jabc:mysql://主機名稱或地址:連接埠號碼/資料庫的名稱";
如:
String url = "jabc:mysql://localhost:3306/StarXiaoLi";
3. Class.forName("com.mysql.jdbc.Driver"); 複製類名的時候不能有 .class 多出來
4. String sql = "INSERT INTO star_studyOne (id,name,sex,age) VALUES (1,'星星','男',12)";
格式是這樣的,字元要有單引號,INSERT INTO 表名(這裡直接是屬性名稱字,沒有單引號的)VALUES (1,'星星','男',12)";