一、需求:
利用jdbc實作對寵物的資訊進行管理的一套系統
寵物資訊:寵物ID,寵物類别,寵物名字,寵物性别,寵物年齡,寵物入庫日期
系統完成功能:實作對寵物資訊的錄入,修改,删除,查詢。
二、解決方案
一共建立了四個類:
1.一個寵物類PetMessage 裡面是寵物的資訊
2.一個是資料庫連接配接類DBUtil 裡面主要是完成資料連接配接功能
3.一個是寵物管理類PetDAO 完成對寵物資訊的增删該查
4.最後一個就是一個測試類PetTest
完成對系統的測試
三、具體實作:
建立一個java項目,并導入需要用到的包。如下圖:
寵物類PetMessage1 package com.daliu.jdbc;
2
3 /**
4 * 寵物資訊類
5 *
6 */
7 public class PetMessage {
8
9 //1.定義寵物的屬性
10 // 寵物資訊:寵物ID,寵物類别,寵物名字,寵物性别,寵物年齡,寵物入庫日期
11 private int petId;
12 private String petSort;
13 private String petName;
14 private String petSex;
15 private int petAge;
16 private String petDate;
17
18 //2.生成一個無參構造方法和有參構造方法
19
20 public PetMessage(){}
21
22 public PetMessage(int petId, String petSort, String petName, String petSex,
23 int petAge, String petDate) {
24 super();
25 this.petId = petId;
26 this.petSort = petSort;
27 this.petName = petName;
28 this.petSex = petSex;
29 this.petAge = petAge;
30 this.petDate = petDate;
31 }
32
33
34 //3.生成屬性的get,set方法
35 public int getPetId() {
36 return petId;
37 }
38 public void setPetId(int petId) {
39 this.petId = petId;
40 }
41 public String getPetSort() {
42 return petSort;
43 }
44 public void setPetSort(String petSort) {
45 this.petSort = petSort;
46 }
47 public String getPetName() {
48 return petName;
49 }
50 public void setPetName(String petName) {
51 this.petName = petName;
52 }
53 public String getPetSex() {
54 return petSex;
55 }
56 public void setPetSex(String petSex) {
57 this.petSex = petSex;
58 }
59 public int getPetAge() {
60 return petAge;
61 }
62 public void setPetAge(int petAge) {
63 this.petAge = petAge;
64 }
65 public String getPetDate() {
66 return petDate;
67 }
68 public void setPetDate(String petDate) {
69 this.petDate = petDate;
70 }
71
72 //4.屬性的toString方法,并改進為自己所要的樣子
73 @Override
74 public String toString() {
75 return "PetMessage [petId=" + petId + ", petSort=" + petSort
76 + ", petName=" + petName + ", petSex=" + petSex + ", petAge="
77 + petAge + ", petDate=" + petDate + "]";
78 }
79 }
資料庫連接配接類DBUtil
1 package com.daliu.jdbc;
2
3 import java.io.InputStream;
4 import java.sql.Connection;
5 import java.sql.SQLException;
6 import java.util.Properties;
7
8 import org.apache.commons.dbcp.BasicDataSource;
9
10 /**
11 * 使用連接配接池技術管理資料庫連接配接
12 */
13 public class DBUtil {
14
15 // 資料庫連接配接池
16 private static BasicDataSource dbcp;
17
18 // 為不同線程管理連接配接
19 private static ThreadLocal<Connection> tl;
20
21 // 通過配置檔案來擷取資料庫參數
22 static {
23 try {
24 Properties prop = new Properties();
25
26 InputStream is = DBUtil.class.getClassLoader().getResourceAsStream(
27 "com/daliu/jdbc/db.properties");
28
29 prop.load(is);
30 is.close();
31
32 // 一、初始化連接配接池
33 dbcp = new BasicDataSource();
34
35 // 設定驅動 (Class.forName())
36 dbcp.setDriverClassName(prop.getProperty("jdbc.driver"));
37 // 設定url
38 dbcp.setUrl(prop.getProperty("jdbc.url"));
39 // 設定資料庫使用者名
40 dbcp.setUsername(prop.getProperty("jdbc.user"));
41 // 設定資料庫密碼
42 dbcp.setPassword(prop.getProperty("jdbc.password"));
43 // 初始連接配接數量
44 dbcp.setInitialSize(Integer.parseInt(prop.getProperty("initsize")));
45 // 連接配接池允許的最大連接配接數
46 dbcp.setMaxActive(Integer.parseInt(prop.getProperty("maxactive")));
47 // 設定最大等待時間
48 dbcp.setMaxWait(Integer.parseInt(prop.getProperty("maxwait")));
49 // 設定最小空閑數
50 dbcp.setMinIdle(Integer.parseInt(prop.getProperty("minidle")));
51 // 設定最大空閑數
52 dbcp.setMaxIdle(Integer.parseInt(prop.getProperty("maxidle")));
53 // 初始化線程本地
54 tl = new ThreadLocal<Connection>();
55 } catch (Exception e) {
56 System.out.println("初始化失敗,請檢查配置檔案是否符合!");
57 e.printStackTrace();
58 }
59 }
60
61 /**
62 * 擷取資料庫連接配接
63 *
64 * @return
65 * @throws SQLException
66 */
67 public static Connection getConnection() throws SQLException {
68 /*
69 * 通過連接配接池擷取一個空閑連接配接
70 */
71 Connection conn = dbcp.getConnection();
72 tl.set(conn);
73 return conn;
74 }
75
76 /**
77 * 關閉資料庫連接配接
78 */
79 public static void closeConnection() {
80 try {
81 Connection conn = tl.get();
82 if (conn != null) {
83 /*
84 * 通過連接配接池擷取的Connection 的close()方法實際上并沒有将 連接配接關閉,而是将該連結歸還。
85 */
86 conn.close();
87 tl.remove();
88 }
89 } catch (Exception e) {
90 System.out.println("釋放資源失敗!");
91 e.printStackTrace();
92 throw new RuntimeException(e);
93 }
94 }
95
96 /**
97 * 測試是否連接配接成功
98 *
99 * @param args
100 * @throws SQLException
101 */
102 public static void main(String[] args) throws SQLException {
103 System.out.println(getConnection());
104 }
105 }
寵物管理類PetDAO
1 package com.daliu.jdbc;
2
3 import java.sql.Connection;
4 import java.sql.ResultSet;
5 import java.sql.SQLException;
6 import java.sql.Statement;
7
8 /**
9 * 寵物資訊操作類
10 *
11 */
12 public class PetDAO {
13
14 // 1.增添寵物資訊
15 public static void doAdd(PetMessage pet) {
16
17 // (1)通過寵物資訊類獲得寵物資訊的定義
18 int petId = pet.getPetId();
19 String petSort = pet.getPetSort();
20 String petName = pet.getPetName();
21 String petSex = pet.getPetSex();
22 int petAge = pet.getPetAge();
23 String petDate = pet.getPetDate();
24
25 // (2)與資料庫連接配接
26 Connection con = null;
27 try {
28 con = DBUtil.getConnection();
29 } catch (SQLException e1) {
30 e1.printStackTrace();
31 }
32
33
34 // (3)建立會話,執行sql語句
35 try {
36 Statement stmt = con.createStatement();
37 // 定義sql語句
38 String sqlString = "insert into petmessage(petid,petsort,petname,petsex,petage,petdate) values("
39 + pet.getPetId()
40 + ",'"
41 + pet.getPetSort()
42 + "','"
43 + pet.getPetName()
44 + "','"
45 + pet.getPetSex()
46 + "',"
47 + pet.getPetAge()
48 + ",'"
49 + pet.getPetDate() + "');";
50
51 // (4)執行sql語句
52 stmt.execute(sqlString);
53
54 //(5)給出相應的提示
55 System.out.println("********************");
56 System.out.println("寵物添加成功!(^o^)");
57 System.out.println("********************");
58
59 //(6)最後釋放資源
60 DBUtil.closeConnection();
61
62
63 } catch (SQLException e) {
64 // TODO 自動生成 catch 塊
65 System.out.println("增加失敗!");
66 e.printStackTrace();
67
68 }
69 }
70
71 //2. 根據寵物ID删除寵物資訊
72 public static void doDeleteWithId(PetMessage pet) {
73
74 //1.獲得改寵物的資訊
75 int petId = pet.getPetId();
76 String petSort = pet.getPetSort();
77 String petName = pet.getPetName();
78 String petSex = pet.getPetSex();
79 int petAge = pet.getPetAge();
80 String petDate = pet.getPetDate();
81
82 // 2.建立資料庫連接配接
83 Connection con = null;
84 try {
85 con = DBUtil.getConnection();
86 } catch (SQLException e1) {
87 e1.printStackTrace();
88 }
89 //3. 建立會話 ,執行sql語句
90 try {
91 Statement stmt = con.createStatement();
92 // 定義sql語句
93 String sqlString = "delete from petmessage where petid="
94 + pet.getPetId() + ";";
95
96 // 執行sql語句
97 stmt.execute(sqlString);
98
99 //給出相應的提示
100 System.out.println("********************");
101 System.out.println("寵物删除成功!(^o^)");
102 System.out.println("********************");
103
104 //關閉資源
105 DBUtil.closeConnection();
106
107 } catch (SQLException e) {
108 // TODO 自動生成 catch 塊
109 System.out.println("根據寵物ID删除寵物資訊失敗!");
110 e.printStackTrace();
111 }
112 }
113
114 // 3.根據寵物名字删除寵物資訊
115 public static void doDeleteWithName(PetMessage pet) {
116
117 //(1)擷取寵物的資訊
118 int petId = pet.getPetId();
119 String petSort = pet.getPetSort();
120 String petName = pet.getPetName();
121 String petSex = pet.getPetSex();
122 int petAge = pet.getPetAge();
123 String petDate = pet.getPetDate();
124
125 // (2)建立資料庫連接配接
126 Connection con = null;
127 try {
128 con = DBUtil.getConnection();
129 } catch (SQLException e1) {
130 e1.printStackTrace();
131 }
132 // (3)建立會話,執行sql語句
133 try {
134 Statement stmt = con.createStatement();
135 // 定義sql語句
136 String sqlString = "delete from petmessage where petName="
137 + pet.getPetName() + ";";
138 // 執行sql語句
139 stmt.execute(sqlString);
140 //給出提示
141 System.out.println("********************");
142 System.out.println("寵物删除成功!(^o^)");
143 System.out.println("********************");
144 //關閉資源
145 DBUtil.closeConnection();
146
147 } catch (SQLException e) {
148 // TODO 自動生成 catch 塊
149 System.out.println("根據寵物名字删除寵物資訊失敗!");
150 e.printStackTrace();
151 }
152 }
153
154 // 4.根據寵物ID修改寵物資訊
155 public static void doUpdateWithID(PetMessage pet) {
156 //(1)擷取寵物資訊
157 int petId = pet.getPetId();
158 String petSort = pet.getPetSort();
159 String petName = pet.getPetName();
160 String petSex = pet.getPetSex();
161 int petAge = pet.getPetAge();
162 String petDate = pet.getPetDate();
163
164 // (2)建立資料庫連接配接
165 Connection con = null;
166 try {
167 con = DBUtil.getConnection();
168 } catch (SQLException e1) {
169 e1.printStackTrace();
170 }
171 // (3)建立會話,執行sql語句
172 try {
173 Statement stmt = con.createStatement();
174 // 定義sql語句
175 String sqlString = "update petmessage set petName='"
176 + pet.getPetName() + "' where petId=" + pet.getPetId()
177 + ";";
178 // 執行sql語句
179 stmt.execute(sqlString);
180 //給出相應的提示
181 System.out.println("**********************");
182 System.out.println("寵物資訊修改成功!(^o^)");
183 System.out.println("**********************");
184 //關閉資源
185 DBUtil.closeConnection();
186 } catch (SQLException e) {
187 // TODO 自動生成 catch 塊
188 System.out.println("根據寵物ID修改寵物資訊失敗");
189 e.printStackTrace();
190 }
191 }
192
193 // 5.根據寵物名字修改寵物資訊
194 public static void doUpdateWithName(PetMessage pet) {
195 //(1)擷取寵物資訊
196 int petId = pet.getPetId();
197 String petSort = pet.getPetSort();
198 String petName = pet.getPetName();
199 String petSex = pet.getPetSex();
200 int petAge = pet.getPetAge();
201 String petDate = pet.getPetDate();
202
203 // (2)建立資料庫連接配接
204 Connection con = null;
205 try {
206 con = DBUtil.getConnection();
207 } catch (SQLException e1) {
208 e1.printStackTrace();
209 }
210 // (3)建立會話,執行sql語句
211 try {
212 Statement stmt = con.createStatement();
213 // 定義sql語句
214 String sqlString = "update petmessage set petAge='"
215 + pet.getPetAge() + "' where petName=" + pet.getPetName()
216 + ";";
217 // 執行sql語句
218 stmt.execute(sqlString);
219 //給出相應的提示
220 System.out.println("**********************");
221 System.out.println("寵物資訊修改成功!(^o^)");
222 System.out.println("**********************");
223 //關閉資源
224 DBUtil.closeConnection();
225 } catch (SQLException e) {
226 // TODO 自動生成 catch 塊
227 System.out.println("據寵物名字修改寵物資訊失敗");
228 e.printStackTrace();
229 }
230 }
231
232 // 6.按ID查詢寵物資訊
233 public static void doSelectWithId(PetMessage pet) {
234 //(1)擷取寵物資訊
235 int petId = pet.getPetId();
236 String petSort = pet.getPetSort();
237 String petName = pet.getPetName();
238 String petSex = pet.getPetSex();
239 int petAge = pet.getPetAge();
240 String petDate = pet.getPetDate();
241 // (2)建立資料庫連接配接
242 Connection con = null;
243 try {
244 con = DBUtil.getConnection();
245 } catch (SQLException e1) {
246 // TODO Auto-generated catch block
247 e1.printStackTrace();
248 }
249 try {
250 // (3)建立語句對象
251 Statement stmt = con.createStatement();
252 // (4)定義sql語句
253 String sqlString = "select * from petMessage where petId="
254 + pet.getPetId() + ";";
255 //(5) 建立結果集 并執行sql語句
256 ResultSet rs = stmt.executeQuery(sqlString);
257 //(6)對結果集進行解析
258 System.out.println("查詢結果如下:");
259 while (rs.next()) {
260 System.out.println("寵物ID: " + rs.getInt("petId") + " 寵物種類:"
261 + rs.getString("petSort") + " 寵物名字:"
262 + rs.getString("petName") + " 寵物性别:"
263 + rs.getString("petSex") + " 寵物年齡:"
264 + rs.getInt("petAge") + " 寵物入庫時間:"
265 + rs.getString("petDate"));
266 }
267
268 //(7)關閉相應的資源
269 DBUtil.closeConnection();
270 } catch (SQLException e) {
271 // TODO 自動生成 catch 塊
272 System.out.println("按ID查詢寵物資訊失敗");
273 e.printStackTrace();
274 }
275 }
276
277 // 7.按名字查詢寵物資訊
278 public static void doSelectWithName(PetMessage pet) {
279 //(1)擷取寵物資訊
280 int petId = pet.getPetId();
281 String petSort = pet.getPetSort();
282 String petName = pet.getPetName();
283 String petSex = pet.getPetSex();
284 int petAge = pet.getPetAge();
285 String petDate = pet.getPetDate();
286 // (2)建立資料庫連接配接
287 Connection con = null;
288 try {
289 con = DBUtil.getConnection();
290 } catch (SQLException e1) {
291 // TODO Auto-generated catch block
292 e1.printStackTrace();
293 }
294 try {
295 // (3)建立語句對象
296 Statement stmt = con.createStatement();
297 //(4) 定義sql語句
298 String sqlString = "select * from petMessage where petName='"
299 + pet.getPetName() + "';";
300 // (5)建立結果集 并執行sql語句
301 ResultSet rs = stmt.executeQuery(sqlString);
302 // (6)對結果集進行解析
303 System.out.println("查詢結果如下:");
304 while (rs.next()) {
305 System.out.println("寵物ID: " + rs.getInt("petId") + " 寵物種類:"
306 + rs.getString("petSort") + " 寵物名字:"
307 + rs.getString("petName") + " 寵物性别:"
308 + rs.getString("petSex") + " 寵物年齡:"
309 + rs.getInt("petAge") + " 寵物入庫時間:"
310 + rs.getString("petDate"));
311 }
312 // (7)關閉是以對象
313 DBUtil.closeConnection();
314 } catch (SQLException e) {
315 // TODO 自動生成 catch 塊
316 System.out.println("按名字查詢寵物資訊失敗!");
317 e.printStackTrace();
318 }
319 }
320 }
測試類PetTest
1 package com.daliu.jdbc;
2
3 public class PetTest {
4 public static void main(String[] args) {
5
6 // 測試資料
7 // PetMessage pet=new
8 // PetMessage(1,"leopard","小豹子","female",5,"2014-12-19");
9 // PetMessage pet1=new
10 // PetMessage(1,"Dog","小狗狗","female",6,"2014-12-20");
11 // PetMessage pet2=new
12 // PetMessage(1,"Cat","小咪咪","female",7,"2014-12-21");
13 // PetMessage pet3=new
14 // PetMessage(1,"mouse","小老鼠","female",8,"2014-12-22");
15 // PetMessage pet4=new
16 // PetMessage(1,"elephant","大象","female",9,"2014-12-23");
17 // PetMessage pet5=new
18 // PetMessage(1,"swan","天鵝","female",10,"2014-12-24");
19
20 // 功能測試:
21
22 // ****1.增添寵物資訊 ********
23 // PetDAO.doAdd(pet);
24 // PetDAO.doAdd(pet1);
25 // PetDAO.doAdd(pet2);
26 // PetDAO.doAdd(pet3);
27 // PetDAO.doAdd(pet4);
28 // PetDAO.doAdd(pet5);
29
30 // ****2. 根據寵物ID删除寵物資訊 ********
31 PetMessage pet = new PetMessage(1, "leopard", "小豹子", "female", 5,
32 "2014-12-19");
33 pet.setPetId(1);
34 PetDAO.doSelectWithId(pet);
35
36 // ****3.根據寵物名字查詢寵物資訊 ********
37 // PetMessage pet = new PetMessage(1, "leopard", "小豹子", "female", 5,
38 // "2014-12-19");
39 // pet.setPetName("小老鼠");
40 // PetDAO.doSelectWithName(pet);
41
42 // ****4.根據寵物ID修改寵物資訊****
43 // PetDAO.doUpdateWithID(pet);
44
45 // ****5.根據寵物名字修改寵物資訊****
46 // PetDAO.doUpdateWithName(pet);
47
48 // ****6.根據寵物ID修改寵物資訊****
49 // PetDAO.doDeleteWithId(pet);
50 // ****7.根據寵物名字修改寵物資訊****
51 // PetDAO.doDeleteWithName(pet);
52 }
53 }
一些測試效果:
SQL腳本:
1 create database PegSystem;
2
3 use PegSystem;
4
5 create table pet(
6
7 #private int petId;
8 #private String petSort;
9
10 #private String petName;
11 #private String petSex;
12 #private int petAge;
13 #private String petDate;
14
15 petId int(7),
16 petSort varchar(20),
17 petName varchar(20),
18 petAge int(4),
19 petDate varchar(20)
20 );
21
22 #select * from pet;
23
24 rename table pet to petMessage;
25
26 #select * from petMessage;
27
28 alter table petMessage add( petsex varchar(20));
29
30 desc petMessage;
31
32 select * from petMessage;
配置檔案:
1 jdbc.driver=com.mysql.jdbc.Driver
2 jdbc.url=jdbc:mysql://localhost:3306/PegSystem
3 jdbc.user=root
4 jdbc.password=123456
5 initsize=1
6 maxactive=1
7 maxwait=5000
8 maxidle=1
9 minidle=1
作者:daliu_it
出處:http://www.cnblogs.com/liuhongfeng/p/4173775.html
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接。謝謝合作。