//图书管类

public class Book {
private Integer id;
private String b_name;
private double b_price;
private Integer b_number;
private Date b_date;
//无参构造方法
public Book() {
super();
// TODO Auto-generated constructor stub
}
public Book(Integer id, String b_name, double b_price, Integer b_number, Date b_date) {
this.id = id;
this.b_name = b_name;
this.b_price = b_price;
this.b_number = b_number;
this.b_date = b_date;
}
public Book( String b_name, double b_price, Integer b_number,Date b_date) {

this.b_name = b_name;
this.b_price = b_price;
this.b_number = b_number;
this.b_date=b_date;
}

public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getB_name() {
return b_name;
}
public void setB_name(String b_name) {
this.b_name = b_name;
}
public double getB_price() {
return b_price;
}
public void setB_price(double b_price) {
this.b_price = b_price;
}
public Integer getB_number() {
return b_number;
}
public void setB_number(Integer b_number) {
this.b_number = b_number;
}
public Date getB_date() {
return b_date;
}
public void setB_date(Date b_date) {
this.b_date = b_date;
}
@Override
public String toString() {
return this.id+"\t"+this.b_name+"\t"+this.b_price+"\t"+this.b_number
+"\t"+this.b_date;
}

}

//用户类

public class MyUser {
private Integer id;
private String u_name;
private String u_pass;
public MyUser() {
super();
// TODO Auto-generated constructor stub
}

public MyUser(Integer id,String u_name, String u_pass) {
this.id = id;
this.u_name = u_name;
this.u_pass = u_pass;
}

public MyUser(String u_name, String u_pass) {
this.u_name = u_name;
this.u_pass = u_pass;
}

public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getU_name() {
return u_name;
}
public void setU_name(String u_name) {
this.u_name = u_name;
}
public String getU_pass() {
return u_pass;
}
public void setU_pass(String u_pass) {
this.u_pass = u_pass;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return this.id+"\t"+this.u_name+"\t"+this.u_pass;
}

}

//图书接口

public interface Bookdao {
public abstract boolean add(Book b);
public abstract boolean del(Integer id);
public abstract boolean change(Integer id,double price);
public abstract Book find(Integer id);
public abstract List<Book>findAll();

}

//用户接口

public interface MyUserDao {
//根据id与密码来进行登录
public abstract MyUser find(String name,String u_pass);
//注册
public abstract boolean register(MyUser my);

}

//jdbc工具类,注册驱动获取连接数据库对象 释放资源

ublic class jdbcUtils {
//定义初始化
private static String urls;
private static String users;
private static String passwords;
private static String drivers;
//注册驱动
static{
//需要读取资源文件
try {
//创建属性集对象
Properties pro=new Properties();
//通过当前类的字节码文件对象来获取类加载器对象
ClassLoader classLoader=jdbcUtils.class.getClassLoader();
//使用类加载器对象来获取当前项目下的src下的配置文件
URL res=classLoader.getResource("jdbc.properties");
//使用res对象获取数据库的路径
String path=res.getPath();
//打印路径
System.out.println(path);
//通过属性集对象来加载文件
pro.load(new FileReader(path));
//使用属性集对象,来获取配置文件中的数据
urls=pro.getProperty("url");
users=pro.getProperty("user");
passwords=pro.getProperty("password");
drivers=pro.getProperty("driver");
//注册驱动
Class.forName(drivers);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//获取连接数据库对象
public static Connection getConnetion() throws SQLException{
return DriverManager.getConnection(urls,users,passwords);

}
//释放资源两个参数 三参数
public static void close(Statement sta,Connection con){
if(sta!=null){
try {
sta.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
if(con!=null){
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//三个参数
public static void close(ResultSet rs,Statement sta,Connection con){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(sta!=null){
try {
sta.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(con!=null){
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}

//该工具类,是为了将获取毫秒值转换为我们想要的日期格式对象

public class Myutils {
public static Date getDate(String date){
Date myDate=null;
//创建日期解析格式化对象
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
//通过解析对象将对象字符串转换为日期对象
try {
myDate=sdf.parse(date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return myDate;

}

}

//图书接口实现类,具体来完成 增删改查 查看所有功能操作

public class BookDaoImpI implements Bookdao {

@Override
public boolean add(Book b) {
Connection con=null;
PreparedStatement ps=null;
try {
//使用jdbc 工具类来注册驱动,获取数据库连接对象
con=jdbcUtils.getConnetion();
//定义sql语句
String sql="insert into Book(b_name,price,number,b_date)values(?,?,?,?)";
//获取执行sql对象
ps=con.prepareStatement(sql);
//给?赋值
ps.setString(1,b.getB_name());
ps.setDouble(2,b.getB_price());
ps.setInt(3,b.getB_number());
ps.setDate(4,b.getB_date());
//执行sql对象
int i=ps.executeUpdate();
//处理结果
return i>0? true:false;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
jdbcUtils.close(ps, con);
}
return false;
}

@Override
public boolean del(Integer id) {
Connection con=null;
PreparedStatement ps=null;
try {
//使用jdbc连接数据库,注册驱动,获取连接数据库对象
con=jdbcUtils.getConnetion();
//定义sql
String sql="delete from Book where id =?";
//获取执行sql对象
ps=con.prepareStatement(sql);
//给?赋值
ps.setInt(1,id);
//执行sql语句
int i=ps.executeUpdate();
//处理结果
return(i>0)?true:false;

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
jdbcUtils.close(ps, con);

}
return false;
}

@Override
public boolean change(Integer id, double price) {
PreparedStatement ps=null;
Connection con=null;
try {
//注册驱动,获取数据库连接对像
con=jdbcUtils.getConnetion();
//定义sql语句
String sql="update Book set price=? where id=?";
//获取执行sql对象
ps=con.prepareStatement(sql);
//给?赋值;
ps.setDouble(1,price);
ps.setInt(2,id);
//执行sql语句
int i=ps.executeUpdate();
//处理结果
return i>0? true:false;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
jdbcUtils.close(ps, con);
}
return false;
}

@Override
public Book find(Integer id) {
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
//创建book对象
Book b=null;
try {
//使用jdbc 连接数据库,注册驱动,获取连接数据库连接对象
con=jdbcUtils.getConnetion();
//定义sql
String sql="select*from Book where id=?";
//获取执行sql对象
ps=con.prepareStatement(sql);
//给?赋值
ps.setInt(1, id);
//执行sql语句
rs=ps.executeQuery();
//处理结果
if(rs.next()){
//获取结果集中的数据
Integer b_id=rs.getInt(1);
String b_name=rs.getString(2);
Double b_price=rs.getDouble(3);
Integer b_number=rs.getInt(4);
Date b_date=rs.getDate(5);
//创建book对象,并给对象添加值
b=new Book(b_id,b_name,b_price,b_number,b_date);

}
return b;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
jdbcUtils.close(rs,ps, con);
}
return null;
}

@Override
public List<Book> findAll() {
//创建集合对象
List<Book>list=null;
try {
//实用工具类来注册驱动,获取数据连接对象
Connection con=jdbcUtils.getConnetion();
//定义sql语句
String sql="select*from Book";
//获取执行sql对象
PreparedStatement ps=con.prepareStatement(sql);
//执行sql对象
ResultSet rs=ps.executeQuery();
//处理结果,判断结果集中是否有数据,如果有数据,那么,需要给集合添加对象
list=new ArrayList<Book>();
Book b=null;
while(rs.next()){
//获取结果集中的数据
Integer id=rs.getInt(1);
String name=rs.getString(2);
double price=rs.getDouble(3);
Integer number=rs.getInt(4);
Date date=rs.getDate(5);
//将结果集中获取的数据,给添加到BOOK实体对象中
b=new Book(id,name,price,number,date);
//给集合添加数据
list.add(b);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return list;
}

}

public class myUserDaoImpI implements MyUserDao {

@Override//登录
public MyUser find(String name, String u_pass) {
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
//注册驱动,获取数据库连接对象
con=jdbcUtils.getConnetion();
//定义sql语句,使用?来作为占位符
String sql="select * from myUser where id=? and m_pass=?";
//获取执行sql对象
ps=con.prepareStatement(sql);
//给?赋值
ps.setString(1,name);
ps.setString(2,u_pass);
//执行sql对象
rs=ps.executeQuery();
if(rs.next()){
int b_id = rs.getInt(1);
String b_name=rs.getString(2);
String b_pass=rs.getString(3);
return new MyUser(b_id,b_name,b_pass);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
jdbcUtils.close(rs,ps, con);
}


return null;
}

@Override
public boolean register(MyUser my) {
Connection con=null;
PreparedStatement ps =null;
try {
con=jdbcUtils.getConnetion();
String sql="insert into myUser(m_name,m_pass) values(?,?)";
ps=con.prepareStatement(sql);

ps.setString(1,my.getU_name());
ps.setString(2,my.getU_pass());
int i=ps.executeUpdate();
return(i!=0)?true:false;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
jdbcUtils.close(ps, con);
}

return false;
}

}

public class server {
Scanner sc=new Scanner(System.in);
// MyUserDao ud=new myUserDaoImpI();
myUserDaoImpI ud = new myUserDaoImpI();
Bookdao gd=new BookDaoImpI();
//定义程序开始方法
public void start(){
menu();
}
public void menu(){
System.out.println("===某某图书馆注册登录管理系统====");
System.out.println("1注册");
System.out.println("2登录");
System.out.println("3退出");
System.out.println("请选择");
int n=sc.nextInt();
switch (n) {
case 1:
regist();
break;
case 2:
islogin();
break;
case 3:
System.out.println();
System.exit(0);

default:
break;
}
System.out.println();
menu();
}
public void regist(){
System.out.println("===xx图书管理注册界面===");
// System.out.println("请输入要注册的id");
// Integer id=sc.nextInt();

System.out.println("请输入要注册的用户名");
String name=sc.next();
System.out.println("请输入要注册的密码");
String password=sc.next();
boolean b=ud.register(new MyUser(name,password));
if(b){
System.out.println("注册成功");
}else{
System.out.println("注册失败");
return;
}

//登录
public void islogin(){
System.out.println("==图书管理登录界面");
System.out.println("请输入登录的id编号");
String name=sc.next();
System.out.println("请输入登录的密码");
String password=sc.next();
MyUser mu=ud.find(name, password);
//判断用户对象是否存在
if(mu!=null){
System.out.println("登陆成功");
System.out.println();
System.out.println("可以进入二级菜单");
menu2();

}else{
System.out.println("登录失败");
}

}
public void menu2(){
System.out.println("===某某图书馆管理系统===");
System.out.println("1展示所有图书信息");
System.out.println("2增加一本书");
System.out.println("3移除一本书");
System.out.println("4修改书价格");
System.out.println("5根据编号查找书");
System.out.println("6退出程序");
System.out.println("请选择");
int n = sc.nextInt();
switch (n) {
case 1:
BookFindAll();
break;
case 2:
OneByAdd();
break;
case 3:
delByID();
break ;
case 4:
changByld();
break;
case 5:
findByld();
break;
case 6:
System.out.println("程序已退出");
System.exit(0);
break;

default:
System.out.println("选择错误,请重新选择");
break;
}
System.out.println();
menu2();

}
public void BookFindAll(){
System.out.println("图书编号\t图书名称\t图书价格\t图书库存\t图书日期\t");
//调用接口抽象方法
List<Book>list=gd.findAll();
//判断接口是否有数据
if(list==null||list.isEmpty()){
System.out.println("该对象是没有数据的");
return;
}
for(Book b: list){
System.out.println(b);
}

}
public void OneByAdd(){
System.out.println("请输入书名称");
String name=sc.next();
System.out.println("请输入书价格");
double price=sc.nextDouble();
System.out.println("请输入书库存");
Integer number=sc.nextInt();
System.out.println("请输入书生产日期");
String strDate=sc.next();
//将键盘录入的日期转换Date对象
Date dat=Myutils.getDate(strDate);
long cratetime=dat.getTime();
java.sql.Date date=new java.sql.Date(cratetime);
//调用接口中的抽象方法
boolean b=gd.add(new Book(name,price,number,date));
if(b){
System.out.println("添加成功");
return;

}else{
System.out.println("添加失败");
}
}
public void delByID(){
System.out.println("请输入要删除图书的编号");
int id=sc.nextInt();
Book b=gd.find(id);
if(b==null){
System.out.println("图书不存在");
}else{
//调用接口删除方法
boolean g=gd.del(id);
if(g){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}

}

}
public void changByld(){
System.out.println("请输入要修改价格图书编号");
int id=sc.nextInt();
System.out.println("请输入要修改的价格");
double price=sc.nextDouble();
Book b=gd.find(id);
if(b==null){
System.out.println("该图书不存在");
return;
}else{
boolean g=gd.change(id, price);
if(g){
System.out.println("修改成功");
}else{
System.out.println("修改失败");
return;
}
}
}
public void findByld(){
System.out.println("请输入要查询图书的编号");
int i=sc.nextInt();
//调用接口中的查找方法
Book b=gd.find(i);
if(b!=null){
System.out.println("图书编号\t图书名称\t图书单价\t图书库存\t生产日期");
System.out.println(b);

}else{
System.out.println("该图书不存在");
return;
}
}

}

//测试

public class test {
public static void main(String[] args) {
new server().start();
}

java高级项目 jdbc与数据库连接数据库的更多相关文章

  1. Java高级项目实战03:CRM系统数据库设计

    接上一篇:Java高级项目实战02:客户关系管理系统CRM系统模块分析与介绍 欢迎点击回顾,接下来我们说说 CRM系统数据库设计. 我们根据产品的原型搞以及UI组的设计稿, 接下来就要设计数据库, 一 ...

  2. Java高级项目实战02:客户关系管理系统CRM系统模块分析与介绍

    本文承接上一篇:Java高级项目实战之CRM系统01:CRM系统概念和分类.企业项目开发流程 先来CRM系统结构图: 每个模块作用介绍如下: 1.营销管理 营销机会管理:针对企业中客户的质询需求所建立 ...

  3. java web中Jdbc访问数据库步骤通俗解释(吃饭),与MVC的通俗解释(做饭)

    一.Jdbc访问数据库步骤通俗解释(吃饭) 1)加载驱动 Class.forName(“com.microsoft.jdbc.sqlserver.SQLServer”); 2) 与数据库建立连接 Co ...

  4. Java 项目JDBC 链接数据库中会出现的错误

    1.出现的地方 package com.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql ...

  5. JAVA 高级特性 JDBC

     需要的jdbc jar 包: mysql-connector-java-5.1.38-b...960.9 KB ojdbc6.jar2.0 MB sqljdbc4.jar455.4 KB   数据持 ...

  6. Java高级项目实战之CRM系统01:CRM系统概念和分类、企业项目开发流程

    1. CRM系统介绍 CRM系统即客户关系管理系统, 顾名思义就是管理公司与客户之间的关系. 是一种以"客户关系一对一理论"为基础,旨在改善企业与客户之间关系的新型管理机制.客户关 ...

  7. 2017最新技术java高级架构、千万高并发、分布式集群、架构师入门到精通视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...

  8. jdbc链接数据库,获取表名,字段名和数据

    import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import  ...

  9. Java高级篇(三)——JDBC数据库编程

    JDBC是连接数据库和Java程序的桥梁,通过JDBC API可以方便地实现对各种主流数据库的操作.本篇将介绍一下如何使用JDBC操作数据库(以MySQL为例). 一.JDBC JDBC制定了统一访问 ...

随机推荐

  1. Fastlane- app自动编译、打包多个版本、上传到app store

    Fastlane是一套使用Ruby写的自动化工具集,用于iOS和Android的自动化打包.发布等工作,可以节省大量的时间. Github:https://github.com/fastlane/fa ...

  2. 详细分析链表中的递归性质(Java 实现)

    目录 链表中的递归性质 前言 LeetCode 上关于链表的一道问题 203 号题目 移除链表中的元素 递归的基本概念与示例 链表天然的递归性 小结 链表中的递归性质 前言 在前面的 链表的数据结构的 ...

  3. HTML5 Drag & Drop

    一定要区分不同事件产生的对象 源元素 属性:draggable = "true" 事件: ondragstart:开始拖拽 ondragend:拖拽结束 目标元素 事件: ondr ...

  4. django学习(三)

    1.单表操作和测试环境的准备 我们先对单表查询做一个总结和回顾,并进行进一步的学习和交流.我们在我们的应用的models.py文件下面书写user类.如下所示,然后用数据库迁移,在mysql数据库中生 ...

  5. 16_Python的包package

    1.包的概述 1.包是将模块一文件夹的组织形式进行分组管理的方法,一系列模块进行分类管理有利于防止命名冲突 2.包是一个包含多个模块的特色目录,目录下有一个特色的文件__init__.py 3.包的命 ...

  6. Zabbix 5.0 LTS版本的安装小结

    Zabbix 5.0 LTS版本的安装小结   1:准备Zabbix的服务器. 这里可能需要一台或多台服务器,视需求和资源而定.也可以将Zabbix_Server.MySQL.Zabbix Web等安 ...

  7. 在遍历ResultSet的循环中再执行SQL会发生什么(前提:同一个Statement)

    如下面代码: Class.forName(DBParam.Driver).newInstance(); conn = DriverManager.getConnection(DBParam.DbUrl ...

  8. 快速启动CMD窗口的办法

    在 文件管理器的 地址栏输入cmd回车,cmd会快速在此路径下打开. --END-- 2020-01-07

  9. YOLOv4: Darknet 如何于 Docker 编译,及训练 COCO 子集

    YOLO 算法是非常著名的目标检测算法.从其全称 You Only Look Once: Unified, Real-Time Object Detection ,可以看出它的特性: Look Onc ...

  10. python中绑定码云仓库

    1.File——Settings——Version Control——Git——输入git安装路径下bin下的git.exe路径——点击后面的Test测试一下,弹出版本点击ok即可 2.点击工具栏中的 ...