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)";