程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> java jdbc 連接mysql數據庫 實現增刪改查,jdbcmysql

java jdbc 連接mysql數據庫 實現增刪改查,jdbcmysql

編輯:JAVA綜合教程

java jdbc 連接mysql數據庫 實現增刪改查,jdbcmysql


好久沒有寫博文了,寫個簡單的東西熱熱身,分享給大家。

jdbc相信大家都不陌生,只要是個搞java的,最初接觸j2ee的時候都是要學習這麼個東西的,誰叫程序得和數據庫打交道呢!而jdbc就是和數據庫打交道非常基礎的一個知識,也是比較接近底層的,在實際的工作中大家用得更多的其實還是比較成熟的框架,例如Hibernate、Mybatis。

但是作為這些成熟框架的底層的jdbc卻也是我們應該去掌握的,只有了解了jdbc的增刪改查,這樣在以後如果有興趣去研究Hibernate或者Mybatis的源代碼的時候才能更好的去理解這些成熟的框架是如何去實現增刪改查的。

回歸正題,先來看看我們的開發環境:

Java語言、Eclipse開發工具、Mysql數據庫、Navicat數據庫可視化工具。

開發環境的安裝搭建及使用請自己查閱資料(很簡單的),這裡不詳細闡述。

第一步,創建數據庫,利用Navicat數據庫可視化工具隨便建立一個數據庫,在庫中建立一張表,表裡給幾個字段(記得給個id字段,唯一主鍵,自增序列),再隨便給上兩條數據便好,用來測試功能,如圖:

 

第二步,打通數據庫(這個例子希望大家自己動手敲敲,耽誤不了多少時間,熟悉一下jdbc如何和數據庫打交道,故以圖示之),如圖:

 

第三步,改造DBUtil類,方便在dao層獲得數據庫的連接,代碼如下:

 1 package com.czgo.db;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.SQLException;
 6 
 7 public class DBUtil
 8 {
 9     private static final String URL = "jdbc:mysql://127.0.0.1:3306/imooc";
10     private static final String UNAME = "root";
11     private static final String PWD = "root";
12 
13     private static Connection conn = null;
14 
15     static
16     {
17         try
18         {
19             // 1.加載驅動程序
20             Class.forName("com.mysql.jdbc.Driver");
21             // 2.獲得數據庫的連接
22             conn = DriverManager.getConnection(URL, UNAME, PWD);
23         }
24         catch (ClassNotFoundException e)
25         {
26             e.printStackTrace();
27         }
28         catch (SQLException e)
29         {
30             e.printStackTrace();
31         }
32     }
33 
34     public static Connection getConnection()
35     {
36         return conn;
37     }
38 }

 

第四步,創建實體類(如上圖,大家觀察包的分配,我們將采用MVC思想設計本實例,有關於mvc的設計思想,請大家自行學習,這裡不多說)代碼如下:

 1 package com.czgo.model;
 2 
 3 import java.io.Serializable;
 4 
 5 /**
 6  * 實體類:女神類
 7  * 
 8  * @author AlanLee
 9  * 
10  */
11 public class Goddess implements Serializable
12 {
13     private static final long serialVersionUID = 1L;
14 
15     /**
16      * 唯一主鍵
17      */
18     private Integer id;
19     /**
20      * 姓名
21      */
22     private String name;
23     /**
24      * 手機號碼
25      */
26     private String mobie;
27     /**
28      * 電子郵件
29      */
30     private String email;
31     /**
32      * 家庭住址
33      */
34     private String address;
35 
36     public Integer getId()
37     {
38         return id;
39     }
40 
41     public void setId(Integer id)
42     {
43         this.id = id;
44     }
45 
46     public String getName()
47     {
48         return name;
49     }
50 
51     public void setName(String name)
52     {
53         this.name = name;
54     }
55 
56     public String getMobie()
57     {
58         return mobie;
59     }
60 
61     public void setMobie(String mobie)
62     {
63         this.mobie = mobie;
64     }
65 
66     public String getEmail()
67     {
68         return email;
69     }
70 
71     public void setEmail(String email)
72     {
73         this.email = email;
74     }
75 
76     public String getAddress()
77     {
78         return address;
79     }
80 
81     public void setAddress(String address)
82     {
83         this.address = address;
84     }
85 }

第五步,dao層的實現(這裡由於是小例子沒有寫dao接口,實際工作中大型項目應該是要寫dao接口的,便於程序的維護和擴展),代碼如下:

  1 package com.czgo.dao;
  2 
  3 import java.sql.Connection;
  4 import java.sql.PreparedStatement;
  5 import java.sql.ResultSet;
  6 import java.sql.SQLException;
  7 import java.util.ArrayList;
  8 import java.util.List;
  9 
 10 import com.czgo.db.DBUtil;
 11 import com.czgo.model.Goddess;
 12 
 13 /**
 14  * 數據層處理類
 15  * 
 16  * @author AlanLee
 17  * 
 18  */
 19 public class GoddessDao
 20 {
 21     /**
 22      * 查詢全部女神
 23      * 
 24      * @return
 25      * @throws SQLException
 26      */
 27     public List<Goddess> query() throws SQLException
 28     {
 29         List<Goddess> goddessList = new ArrayList<Goddess>();
 30 
 31         // 獲得數據庫連接
 32         Connection conn = DBUtil.getConnection();
 33 
 34         StringBuilder sb = new StringBuilder();
 35         sb.append("select id,name,mobie,email,address from goddess");
 36 
 37         // 通過數據庫的連接操作數據庫,實現增刪改查
 38         PreparedStatement ptmt = conn.prepareStatement(sb.toString());
 39 
 40         ResultSet rs = ptmt.executeQuery();
 41 
 42         Goddess goddess = null;
 43 
 44         while (rs.next())
 45         {
 46             goddess = new Goddess();
 47             goddess.setId(rs.getInt("id"));
 48             goddess.setName(rs.getString("name"));
 49             goddess.setMobie(rs.getString("mobie"));
 50             goddess.setEmail(rs.getString("email"));
 51             goddess.setAddress(rs.getString("address"));
 52 
 53             goddessList.add(goddess);
 54         }
 55         return goddessList;
 56     }
 57 
 58     /**
 59      * 查詢單個女神
 60      * 
 61      * @return
 62      * @throws SQLException
 63      */
 64     public Goddess queryById(Integer id) throws SQLException
 65     {
 66         Goddess g = null;
 67 
 68         Connection conn = DBUtil.getConnection();
 69 
 70         String sql = "" + " select * from imooc_goddess " + " where id=? ";
 71 
 72         PreparedStatement ptmt = conn.prepareStatement(sql);
 73 
 74         ptmt.setInt(1, id);
 75 
 76         ResultSet rs = ptmt.executeQuery();
 77 
 78         while (rs.next())
 79         {
 80             g = new Goddess();
 81             g.setId(rs.getInt("id"));
 82             g.setName(rs.getString("name"));
 83             g.setMobie(rs.getString("mobie"));
 84             g.setEmail(rs.getString("email"));
 85             g.setAddress(rs.getString("address"));
 86         }
 87 
 88         return g;
 89     }
 90 
 91     /**
 92      * 添加女神
 93      * 
 94      * @throws SQLException
 95      */
 96     public void addGoddess(Goddess goddess) throws SQLException
 97     {
 98         // 獲得數據庫連接
 99         Connection conn = DBUtil.getConnection();
100 
101         String sql = "insert into goddess(name,mobie,email,address) values(?,?,?,?)";
102 
103         PreparedStatement ptmt = conn.prepareStatement(sql);
104 
105         ptmt.setString(1, goddess.getName());
106         ptmt.setString(2, goddess.getMobie());
107         ptmt.setString(3, goddess.getEmail());
108         ptmt.setString(4, goddess.getAddress());
109 
110         ptmt.execute();
111     }
112 
113     /**
114      * 修改女神資料
115      * 
116      * @throws SQLException
117      */
118     public void updateGoddess(Goddess goddess) throws SQLException
119     {
120         Connection conn = DBUtil.getConnection();
121 
122         String sql = "update goddess set name=?,mobie=?,email=?,address=? where id=?";
123 
124         PreparedStatement ptmt = conn.prepareStatement(sql);
125 
126         ptmt.setString(1, goddess.getName());
127         ptmt.setString(2, goddess.getMobie());
128         ptmt.setString(3, goddess.getEmail());
129         ptmt.setString(4, goddess.getAddress());
130 
131         ptmt.execute();
132     }
133 
134     /**
135      * 刪除女神
136      * 
137      * @throws SQLException
138      */
139     public void deleteGoddess(Integer id) throws SQLException
140     {
141         Connection conn = DBUtil.getConnection();
142 
143         String sql = "delete from goddess where id=?";
144 
145         PreparedStatement ptmt = conn.prepareStatement(sql);
146 
147         ptmt.setInt(1, id);
148 
149         ptmt.execute();
150     }
151 }

第六步,控制層的實現(控制層在此處用來模仿控制層和界面,直接在這裡構建數據,如果是界面的數據則通過請求傳遞接收參數即可,控制層的代碼大家可以根據實際情況去更改完善,這裡只是給大家拋磚引玉,做個簡單的測試,時間比較緊,希望大家理解),代碼如下:

 1 package com.czgo.action;
 2 
 3 import java.sql.SQLException;
 4 import java.util.List;
 5 
 6 import com.czgo.dao.GoddessDao;
 7 import com.czgo.model.Goddess;
 8 
 9 /**
10  * 控制層,直接在這裡構建數據,界面的數據則通過請求傳遞接收即可,亦是同理
11  * 
12  * @author AlanLee
13  * 
14  */
15 public class GoddessAction
16 {
17     /**
18      * 新增女神
19      * 
20      * @param goddess
21      * @throws Exception
22      */
23     public void add(Goddess goddess) throws Exception
24     {
25         GoddessDao dao = new GoddessDao();
26         goddess.setName("蒼井空");
27         goddess.setMobie("52220000");
28         goddess.setEmail("[email protected]");
29         goddess.setAddress("北京紅燈區");
30         dao.addGoddess(goddess);
31     }
32 
33     /**
34      * 查詢單個女神
35      * 
36      * @param id
37      * @return
38      * @throws SQLException
39      */
40     public Goddess get(Integer id) throws SQLException
41     {
42         GoddessDao dao = new GoddessDao();
43         return dao.queryById(id);
44     }
45 
46     /**
47      * 修改女神
48      * 
49      * @param goddess
50      * @throws Exception
51      */
52     public void edit(Goddess goddess) throws Exception
53     {
54         GoddessDao dao = new GoddessDao();
55         dao.updateGoddess(goddess);
56     }
57 
58     /**
59      * 刪除女神
60      * 
61      * @param id
62      * @throws SQLException
63      */
64     public void del(Integer id) throws SQLException
65     {
66         GoddessDao dao = new GoddessDao();
67         dao.deleteGoddess(id);
68     }
69 
70     /**
71      * 查詢全部女神
72      * 
73      * @return
74      * @throws Exception
75      */
76     public List<Goddess> query() throws Exception
77     {
78         GoddessDao dao = new GoddessDao();
79         return dao.query();
80     }
81 
82     /**
83      * 測試是否成功
84      * 
85      * @param args
86      * @throws SQLException
87      */
88     public static void main(String[] args) throws SQLException
89     {
90         GoddessDao goddessDao = new GoddessDao();
91 
92         List<Goddess> goddessList = goddessDao.query();
93 
94         for (Goddess goddess : goddessList)
95         {
96             System.out.println(goddess.getName() + "," + goddess.getMobie() + "," + goddess.getEmail());
97         }
98     }
99 }

最後,讓我們看一下main方法的運行結果是否成功:

這樣,一個簡單的java jdbc 連接mysql數據庫 實現增刪改查便完成了,大家可以在查詢的基礎上試著去做一個高級查詢,也就是多條件查詢來鞏固jdbc的使用。

現在21:00,還沒有吃晚飯,時間比較緊,所以沒有給大家一一測試增刪改查的功能,閒著沒事做蛋疼的可以都去測試一下,如果發現問題,希望能夠指正小Alan,小Alan有空的時候便去修正博文中的一些錯誤。

最後的最後,祝大家今晚都能夠做一個美美的夢,小Alan吃晚飯去了,下次再會!

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved