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提供的各种 ...
随机推荐
- MEF(Managed Extensibility Framework)使用全部扩展组件
MEF(Managed Extensibility Framework),所在命名空间是System.ComponentModel.Composition.dll.简单来说,MEF是将符合约定(一般是 ...
- Fine Uploader + Spring3.2.2(Java+html5上传) SpringMVC+jquery-fineuploader 文件上传
需求:要实现多文件上传,且要支持手机等移动设备... springmvc文件上传真头疼,网上搜了半天没发现都是TMD的用submit按钮提交到后台的,就没有插件的吗?最后发现了fineUploader ...
- Top N的MapReduce程序MapReduce for Top N items
In this post we'll see how to count the top-n items of a dataset; we'll again use the flatland book ...
- 【BZOJ】【2752】【HAOI2012】高速公路(Road)
数学期望/线段树 然而又是一道road= =上一道是2750…… 下次不要一看期望题就弃疗么…… 期望题≠不可做题……!! 其实在这题中,期望就是(所有情况下 权值之和)/(总方案数) 因为是等概率抽 ...
- @JVM垃圾收集器种类
为什么要分代 之所以采用分代垃圾收集机制是因为不同的对象生命周期是不一样的.因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率. 在Java程序运行的过程中,会产生大量的对象,其中有些对 ...
- QT QCharts QScatterSeries 空心点阵图,鼠标移动到上面显示数值,鼠标移开数值消失
在最近接到的需求是这样的,画一个折线图,关键点使用空心的圆点标识出来,鼠标移动到关键点上,显示出当前数值:鼠标移走数值消失. 我们遇到这个需求的时候,第一时间就会想到使用 QLineSeries 画折 ...
- go语言之进阶篇值语义和引用语义
1.值语义和引用语义 示例: package main import "fmt" type Person struct { name string //名字 sex byte // ...
- 牛气冲天的Iframe应用笔记
纵观时下网站,本来网速就有些慢,可是几乎每页都要放什么Banner,栏目图片,版权等一大堆雷同的东西,当然,出于网站风格统一.广告效应的需要,本无可厚非,可毕竟让用户的钱包为这些“点缀“的东西”日益消 ...
- IOS网络访问详解
第一.访问网络的方式 同步请求:数据的请求过程是由主线程发起的,网络加载需要一定的时间,因此会堵塞主线程 异步请求:数据的请求在多线程中完成 同步请求无法取消,异步请求的过程中可以取消,同步请求无法监 ...
- Oracle Agile PLM Web Services 的实现
Oracle 的产品Agile PLM内置了许多Web Services,其他系统可以通过Web Servcies实现对Agile PLM系统资源的访问.快速学会使用的方法,是去Oracle的官网下载 ...