一、需求:
利用jdbc實現對寵物的信息進行管理的一套系統
寵物信息:寵物ID,寵物類別,寵物名字,寵物性別,寵物年齡,寵物入庫日期
系統完成功能:實現對寵物信息的錄入,修改,刪除,查詢。
二、解決方案
一共創建了四個類:
1.一個寵物類PetMessage 裡面是寵物的信息
2.一個是數據庫連接類DBUtil 裡面主要是完成數據連接功能
3.一個是寵物管理類PetDAO 完成對寵物信息的增刪該查
4.最後一個就是一個測試類PetTest
完成對系統的測試
三、具體實現:
新建一個java項目,並導入需要用到的包。如下圖:
寵物類PetMessage
1 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
轉載請標明來自:http://www.cnblogs.com/liuhongfeng/p/4173775.html