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