JDBC实战案例--利用jdbc实现的宠物信息管理系统
一、需求:
利用jdbc实现对宠物的信息进行管理的一套系统
宠物信息:宠物ID,宠物类别,宠物名字,宠物性别,宠物年龄,宠物入库日期
系统完成功能:实现对宠物信息的录入,修改,删除,查询。
二、解决方案
一共创建了四个类:
1.一个宠物类PetMessage 里面是宠物的信息
2.一个是数据库连接类DBUtil 里面主要是完成数据连接功能
3.一个是宠物管理类PetDAO 完成对宠物信息的增删该查
4.最后一个就是一个测试类PetTest
完成对系统的测试
三、具体实现:
新建一个java项目,并导入需要用到的包。如下图:
宠物类PetMessage
package com.daliu.jdbc; /**
* 宠物信息类
*
*/
public class PetMessage { //1.定义宠物的属性
// 宠物信息:宠物ID,宠物类别,宠物名字,宠物性别,宠物年龄,宠物入库日期
private int petId;
private String petSort;
private String petName;
private String petSex;
private int petAge;
private String petDate; //2.生成一个无参构造方法和有参构造方法 public PetMessage(){} public PetMessage(int petId, String petSort, String petName, String petSex,
int petAge, String petDate) {
super();
this.petId = petId;
this.petSort = petSort;
this.petName = petName;
this.petSex = petSex;
this.petAge = petAge;
this.petDate = petDate;
} //3.生成属性的get,set方法
public int getPetId() {
return petId;
}
public void setPetId(int petId) {
this.petId = petId;
}
public String getPetSort() {
return petSort;
}
public void setPetSort(String petSort) {
this.petSort = petSort;
}
public String getPetName() {
return petName;
}
public void setPetName(String petName) {
this.petName = petName;
}
public String getPetSex() {
return petSex;
}
public void setPetSex(String petSex) {
this.petSex = petSex;
}
public int getPetAge() {
return petAge;
}
public void setPetAge(int petAge) {
this.petAge = petAge;
}
public String getPetDate() {
return petDate;
}
public void setPetDate(String petDate) {
this.petDate = petDate;
} //4.属性的toString方法,并改进为自己所要的样子
@Override
public String toString() {
return "PetMessage [petId=" + petId + ", petSort=" + petSort
+ ", petName=" + petName + ", petSex=" + petSex + ", petAge="
+ petAge + ", petDate=" + petDate + "]";
}
}
数据库连接类DBUtil
package com.daliu.jdbc; import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties; import org.apache.commons.dbcp.BasicDataSource; /**
* 使用连接池技术管理数据库连接
*/
public class DBUtil { // 数据库连接池
private static BasicDataSource dbcp; // 为不同线程管理连接
private static ThreadLocal<Connection> tl; // 通过配置文件来获取数据库参数
static {
try {
Properties prop = new Properties(); InputStream is = DBUtil.class.getClassLoader().getResourceAsStream(
"com/daliu/jdbc/db.properties"); prop.load(is);
is.close(); // 一、初始化连接池
dbcp = new BasicDataSource(); // 设置驱动 (Class.forName())
dbcp.setDriverClassName(prop.getProperty("jdbc.driver"));
// 设置url
dbcp.setUrl(prop.getProperty("jdbc.url"));
// 设置数据库用户名
dbcp.setUsername(prop.getProperty("jdbc.user"));
// 设置数据库密码
dbcp.setPassword(prop.getProperty("jdbc.password"));
// 初始连接数量
dbcp.setInitialSize(Integer.parseInt(prop.getProperty("initsize")));
// 连接池允许的最大连接数
dbcp.setMaxActive(Integer.parseInt(prop.getProperty("maxactive")));
// 设置最大等待时间
dbcp.setMaxWait(Integer.parseInt(prop.getProperty("maxwait")));
// 设置最小空闲数
dbcp.setMinIdle(Integer.parseInt(prop.getProperty("minidle")));
// 设置最大空闲数
dbcp.setMaxIdle(Integer.parseInt(prop.getProperty("maxidle")));
// 初始化线程本地
tl = new ThreadLocal<Connection>();
} catch (Exception e) {
System.out.println("初始化失败,请检查配置文件是否符合!");
e.printStackTrace();
}
} /**
* 获取数据库连接
*
* @return
* @throws SQLException
*/
public static Connection getConnection() throws SQLException {
/*
* 通过连接池获取一个空闲连接
*/
Connection conn = dbcp.getConnection();
tl.set(conn);
return conn;
} /**
* 关闭数据库连接
*/
public static void closeConnection() {
try {
Connection conn = tl.get();
if (conn != null) {
/*
* 通过连接池获取的Connection 的close()方法实际上并没有将 连接关闭,而是将该链接归还。
*/
conn.close();
tl.remove();
}
} catch (Exception e) {
System.out.println("释放资源失败!");
e.printStackTrace();
throw new RuntimeException(e);
}
} /**
* 测试是否连接成功
*
* @param args
* @throws SQLException
*/
public static void main(String[] args) throws SQLException {
System.out.println(getConnection());
}
}
宠物管理类PetDAO
package com.daliu.jdbc; import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; /**
* 宠物信息操作类
*
*/
public class PetDAO { // 1.增添宠物信息
public static void doAdd(PetMessage pet) { // (1)通过宠物信息类获得宠物信息的定义
int petId = pet.getPetId();
String petSort = pet.getPetSort();
String petName = pet.getPetName();
String petSex = pet.getPetSex();
int petAge = pet.getPetAge();
String petDate = pet.getPetDate(); // (2)与数据库连接
Connection con = null;
try {
con = DBUtil.getConnection();
} catch (SQLException e1) {
e1.printStackTrace();
} // (3)创建会话,执行sql语句
try {
Statement stmt = con.createStatement();
// 定义sql语句
String sqlString = "insert into petmessage(petid,petsort,petname,petsex,petage,petdate) values("
+ pet.getPetId()
+ ",'"
+ pet.getPetSort()
+ "','"
+ pet.getPetName()
+ "','"
+ pet.getPetSex()
+ "',"
+ pet.getPetAge()
+ ",'"
+ pet.getPetDate() + "');"; // (4)执行sql语句
stmt.execute(sqlString); //(5)给出相应的提示
System.out.println("********************");
System.out.println("宠物添加成功!(^o^)");
System.out.println("********************"); //(6)最后释放资源
DBUtil.closeConnection(); } catch (SQLException e) {
// TODO 自动生成 catch 块
System.out.println("增加失败!");
e.printStackTrace(); }
} //2. 根据宠物ID删除宠物信息
public static void doDeleteWithId(PetMessage pet) { //1.获得改宠物的信息
int petId = pet.getPetId();
String petSort = pet.getPetSort();
String petName = pet.getPetName();
String petSex = pet.getPetSex();
int petAge = pet.getPetAge();
String petDate = pet.getPetDate(); // 2.建立数据库连接
Connection con = null;
try {
con = DBUtil.getConnection();
} catch (SQLException e1) {
e1.printStackTrace();
}
//3. 建立会话 ,执行sql语句
try {
Statement stmt = con.createStatement();
// 定义sql语句
String sqlString = "delete from petmessage where petid="
+ pet.getPetId() + ";"; // 执行sql语句
stmt.execute(sqlString); //给出相应的提示
System.out.println("********************");
System.out.println("宠物删除成功!(^o^)");
System.out.println("********************"); //关闭资源
DBUtil.closeConnection(); } catch (SQLException e) {
// TODO 自动生成 catch 块
System.out.println("根据宠物ID删除宠物信息失败!");
e.printStackTrace();
}
} // 3.根据宠物名字删除宠物信息
public static void doDeleteWithName(PetMessage pet) { //(1)获取宠物的信息
int petId = pet.getPetId();
String petSort = pet.getPetSort();
String petName = pet.getPetName();
String petSex = pet.getPetSex();
int petAge = pet.getPetAge();
String petDate = pet.getPetDate(); // (2)建立数据库连接
Connection con = null;
try {
con = DBUtil.getConnection();
} catch (SQLException e1) {
e1.printStackTrace();
}
// (3)建立会话,执行sql语句
try {
Statement stmt = con.createStatement();
// 定义sql语句
String sqlString = "delete from petmessage where petName="
+ pet.getPetName() + ";";
// 执行sql语句
stmt.execute(sqlString);
//给出提示
System.out.println("********************");
System.out.println("宠物删除成功!(^o^)");
System.out.println("********************");
//关闭资源
DBUtil.closeConnection(); } catch (SQLException e) {
// TODO 自动生成 catch 块
System.out.println("根据宠物名字删除宠物信息失败!");
e.printStackTrace();
}
} // 4.根据宠物ID修改宠物信息
public static void doUpdateWithID(PetMessage pet) {
//(1)获取宠物信息
int petId = pet.getPetId();
String petSort = pet.getPetSort();
String petName = pet.getPetName();
String petSex = pet.getPetSex();
int petAge = pet.getPetAge();
String petDate = pet.getPetDate(); // (2)建立数据库连接
Connection con = null;
try {
con = DBUtil.getConnection();
} catch (SQLException e1) {
e1.printStackTrace();
}
// (3)建立会话,执行sql语句
try {
Statement stmt = con.createStatement();
// 定义sql语句
String sqlString = "update petmessage set petName='"
+ pet.getPetName() + "' where petId=" + pet.getPetId()
+ ";";
// 执行sql语句
stmt.execute(sqlString);
//给出相应的提示
System.out.println("**********************");
System.out.println("宠物信息修改成功!(^o^)");
System.out.println("**********************");
//关闭资源
DBUtil.closeConnection();
} catch (SQLException e) {
// TODO 自动生成 catch 块
System.out.println("根据宠物ID修改宠物信息失败");
e.printStackTrace();
}
} // 5.根据宠物名字修改宠物信息
public static void doUpdateWithName(PetMessage pet) {
//(1)获取宠物信息
int petId = pet.getPetId();
String petSort = pet.getPetSort();
String petName = pet.getPetName();
String petSex = pet.getPetSex();
int petAge = pet.getPetAge();
String petDate = pet.getPetDate(); // (2)建立数据库连接
Connection con = null;
try {
con = DBUtil.getConnection();
} catch (SQLException e1) {
e1.printStackTrace();
}
// (3)建立会话,执行sql语句
try {
Statement stmt = con.createStatement();
// 定义sql语句
String sqlString = "update petmessage set petAge='"
+ pet.getPetAge() + "' where petName=" + pet.getPetName()
+ ";";
// 执行sql语句
stmt.execute(sqlString);
//给出相应的提示
System.out.println("**********************");
System.out.println("宠物信息修改成功!(^o^)");
System.out.println("**********************");
//关闭资源
DBUtil.closeConnection();
} catch (SQLException e) {
// TODO 自动生成 catch 块
System.out.println("据宠物名字修改宠物信息失败");
e.printStackTrace();
}
} // 6.按ID查询宠物信息
public static void doSelectWithId(PetMessage pet) {
//(1)获取宠物信息
int petId = pet.getPetId();
String petSort = pet.getPetSort();
String petName = pet.getPetName();
String petSex = pet.getPetSex();
int petAge = pet.getPetAge();
String petDate = pet.getPetDate();
// (2)建立数据库连接
Connection con = null;
try {
con = DBUtil.getConnection();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
// (3)创建语句对象
Statement stmt = con.createStatement();
// (4)定义sql语句
String sqlString = "select * from petMessage where petId="
+ pet.getPetId() + ";";
//(5) 创建结果集 并执行sql语句
ResultSet rs = stmt.executeQuery(sqlString);
//(6)对结果集进行解析
System.out.println("查询结果如下:");
while (rs.next()) {
System.out.println("宠物ID: " + rs.getInt("petId") + " 宠物种类:"
+ rs.getString("petSort") + " 宠物名字:"
+ rs.getString("petName") + " 宠物性别:"
+ rs.getString("petSex") + " 宠物年龄:"
+ rs.getInt("petAge") + " 宠物入库时间:"
+ rs.getString("petDate"));
} //(7)关闭相应的资源
DBUtil.closeConnection();
} catch (SQLException e) {
// TODO 自动生成 catch 块
System.out.println("按ID查询宠物信息失败");
e.printStackTrace();
}
} // 7.按名字查询宠物信息
public static void doSelectWithName(PetMessage pet) {
//(1)获取宠物信息
int petId = pet.getPetId();
String petSort = pet.getPetSort();
String petName = pet.getPetName();
String petSex = pet.getPetSex();
int petAge = pet.getPetAge();
String petDate = pet.getPetDate();
// (2)建立数据库连接
Connection con = null;
try {
con = DBUtil.getConnection();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
// (3)创建语句对象
Statement stmt = con.createStatement();
//(4) 定义sql语句
String sqlString = "select * from petMessage where petName='"
+ pet.getPetName() + "';";
// (5)创建结果集 并执行sql语句
ResultSet rs = stmt.executeQuery(sqlString);
// (6)对结果集进行解析
System.out.println("查询结果如下:");
while (rs.next()) {
System.out.println("宠物ID: " + rs.getInt("petId") + " 宠物种类:"
+ rs.getString("petSort") + " 宠物名字:"
+ rs.getString("petName") + " 宠物性别:"
+ rs.getString("petSex") + " 宠物年龄:"
+ rs.getInt("petAge") + " 宠物入库时间:"
+ rs.getString("petDate"));
}
// (7)关闭所以对象
DBUtil.closeConnection();
} catch (SQLException e) {
// TODO 自动生成 catch 块
System.out.println("按名字查询宠物信息失败!");
e.printStackTrace();
}
}
}
测试类PetTest
package com.daliu.jdbc; public class PetTest {
public static void main(String[] args) { // 测试数据
// PetMessage pet=new
// PetMessage(1,"leopard","小豹子","female",5,"2014-12-19");
// PetMessage pet1=new
// PetMessage(1,"Dog","小狗狗","female",6,"2014-12-20");
// PetMessage pet2=new
// PetMessage(1,"Cat","小咪咪","female",7,"2014-12-21");
// PetMessage pet3=new
// PetMessage(1,"mouse","小老鼠","female",8,"2014-12-22");
// PetMessage pet4=new
// PetMessage(1,"elephant","大象","female",9,"2014-12-23");
// PetMessage pet5=new
// PetMessage(1,"swan","天鹅","female",10,"2014-12-24"); // 功能测试: // ****1.增添宠物信息 ********
// PetDAO.doAdd(pet);
// PetDAO.doAdd(pet1);
// PetDAO.doAdd(pet2);
// PetDAO.doAdd(pet3);
// PetDAO.doAdd(pet4);
// PetDAO.doAdd(pet5); // ****2. 根据宠物ID删除宠物信息 ********
PetMessage pet = new PetMessage(1, "leopard", "小豹子", "female", 5,
"2014-12-19");
pet.setPetId(1);
PetDAO.doSelectWithId(pet); // ****3.根据宠物名字查询宠物信息 ********
// PetMessage pet = new PetMessage(1, "leopard", "小豹子", "female", 5,
// "2014-12-19");
// pet.setPetName("小老鼠");
// PetDAO.doSelectWithName(pet); // ****4.根据宠物ID修改宠物信息****
// PetDAO.doUpdateWithID(pet); // ****5.根据宠物名字修改宠物信息****
// PetDAO.doUpdateWithName(pet); // ****6.根据宠物ID修改宠物信息****
// PetDAO.doDeleteWithId(pet);
// ****7.根据宠物名字修改宠物信息****
// PetDAO.doDeleteWithName(pet);
}
}
一些测试效果:
SQL脚本:
create database PegSystem; use PegSystem; create table pet( #private int petId;
#private String petSort; #private String petName;
#private String petSex;
#private int petAge;
#private String petDate; petId int(7),
petSort varchar(20),
petName varchar(20),
petAge int(4),
petDate varchar(20)
); #select * from pet; rename table pet to petMessage; #select * from petMessage; alter table petMessage add( petsex varchar(20)); desc petMessage; select * from petMessage;
配置文件:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/PegSystem
jdbc.user=root
jdbc.password=123456
initsize=1
maxactive=1
maxwait=5000
maxidle=1
minidle=1
作者:daliu_it
出处:http://www.cnblogs.com/liuhongfeng/p/4173775.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。谢谢合作。
JDBC实战案例--利用jdbc实现的宠物信息管理系统的更多相关文章
- 利用jdbc连接oracle数据库
JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java 数据库连接)是一种用于执行SQL语 ...
- 利用JDBC连接Oracle数据库(转)
http://blog.csdn.net/wahaha1_/article/details/8512438 JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术. 一.JDBC基础知识 J ...
- JDBC01 利用JDBC连接数据库【不使用数据库连接池】
目录: 1 什么是JDBC 2 JDBC主要接口 3 JDBC编程步骤[学渣版本] 5 JDBC编程步骤[学神版本] 6 JDBC编程步骤[学霸版本] 1 什么是JDBC JDBC是JAVA提供的一套 ...
- 利用JDBC连接Eclipse和mySQL5.1.26数据库
初学JDBC,看了看书,自己动手的时候还是有很多地方有问题,最终终于解决了实现了数据库的连接.现将整个步骤描述如下: 环境:mySQL5.1.26(win 32bit), Eclipse JavaEE ...
- 【课程分享】基于plusgantt的项目管理系统实战开发(Spring3+JDBC+RMI的架构、自己定义工作流)
基于plusgantt的项目管理系统实战开发(Spring3+JDBC+RMI的架构.自己定义工作流) 课程讲师:张弘 课程分类:Java 适合人群:中级 课时数量:37课时 用到技术:Spring ...
- 利用jdbc简单封装一个小框架(类似DBUtils)
利用jdbc写的一个类似DBUtils的框架 package com.jdbc.orm.dbutils; import java.io.IOException; import java.io.Inpu ...
- 利用JDBC连接数据库(MySQL)
1 在eclipse中创建一个maven项目(在Java模式下,不要在JavaEE模式下) 1.1 file -->> new -->> project 2 下载数据库驱动 ...
- 怎样利用JDBC连接并操作Oracle数据库
之前学习.NET的时候.以前利用ODBC进行连接数据库,而在Java中通常採用JDBC连接数据库,这里以oracle数据库为例简单的总结一下利用JDBC怎样连接并操作数据库. 1.连接 public ...
- 42、JDBC数据源案例
一.JDBC数据源案例 1.概述 Spark SQL支持使用JDBC从关系型数据库(比如MySQL)中读取数据.读取的数据,依然由DataFrame表示,可以很方便地使用Spark Core提供的各种 ...
随机推荐
- 报错:具有键"..."的ViewData项属于类型"...",但它必须属于类型"IEnumerable<SelectListItem>"
报错:具有键"..."的ViewData项属于类型"...",但它必须属于类型"IEnumerable<SelectListItem>&q ...
- Java 内存释放
问题一什么叫垃圾回收机制 垃圾回收是一种动态存储管理技术它自动地释放不再被程序引用的对象按照特定的垃圾收集算法来实现资源自动回收的功能.当一个对象不再被引用的时候内存回收它占领的空间 ...
- DevExpress 利用DateEdit 仅显示和选择年份 z
DevExpress只提供了选择月份的控件MonthEdit,并没提供选择选择年份的控件,目测是官方偷懒不想弄,因为要实现的方法也很简单,利用ComboBoxEdit添加年份数据即可,直接封装一个控件 ...
- NLP知识十大结构
NLP知识十大结构 2.1形式语言与自动机 语言:按照一定规律构成的句子或者字符串的有限或者无限的集合. 描述语言的三种途径: 穷举法 文法(产生式系统)描述 自动机 自然语言不是人为设计而是自然进化 ...
- 关于ios发布AppStore验证UUID不过的问题
转载于:http://blog.csdn.net/iunion/article/details/9045573 刚刚更新过的代码出现了问题,在上传之前的验证就不通过,提示 Apps are not p ...
- 第二章 JVM内存分配
注意:本篇博客,主要参考自以下四本书 <分布式Java应用:基础与实践> <深入理解Java虚拟机(第二版)> <突破程序员基本功的16课> <实战java虚 ...
- Search in Rotated Sorted Array II leetcode java
题目: Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would ...
- CI框架入门中的简单MVC样例
最简单的CI模型: 注意:模型须要用到数据库 配置文件在appcation/config.php 这里我们要用到数据库,须要将databases.php中的 相关參数填写一下,详细不再赘述. 直接进入 ...
- Win10系统下软件UI显示不完整解决方案
在最初升级win10的时候就想到了这些问题,例如和各种软件的不兼容性.当然,事实上win10并没有想象的那么糟,作为一个windows user 来说,win10的确是很高大上的,无论是颜值或者是体验 ...
- 【Nodejs】理想论坛帖子下载爬虫1.04
一直想做一个能把理想论坛指定页范围的帖子都能完整下载下来的爬虫,但未能如愿. 主要的障碍在并发数的控制和长时间任务的突然退出,比如想下载前五页的帖子,分析后可得到大约15000个主贴或子贴,如果用回调 ...