JDBC实战案例--利用jdbc实现的宠物信息管理系统
一、需求:
利用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
作者:daliu_it
出处:http://www.cnblogs.com/liuhongfeng/p/4173775.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。谢谢合作。