//图书管类

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. 分布式ID方案SnowFlake雪花算法分析

    1.算法 SnowFlake算法生成的数据组成结构如下: 在java中用long类型标识,共64位(每部分用-分开): 0 - 0000000000 0000000000 0000000000 000 ...

  2. vue3.0 加载json的“另类”方法(非ajax)

    问题 加载json一定要用ajax的方式吗? 最近学习vue3.0,在实现一个功能的时候发现一个问题-- 写代码的时候,需要的json太长.太多,和代码放在一起太混乱.看代码总有翻来翻去,又没有&qu ...

  3. 时间选择器 element

    <el-date-picker type="datetime" placeholder="选择上线日期" :picker-options="st ...

  4. C# 压缩源文件(导出源文件word文件)

    说明 1 : 在webUI 公共类,存放 ZipHelper 类 说明  2 :判断文件路径是否存在,不存在则创建文件夹 说明 3  : 引用类方法,判断压缩文件,返回的,是true/false 引用 ...

  5. Mybatis源码学习第七天(插件开发原理)

    插件概述: 插件是用来改变或者扩展mybatis的原有功能,mybatis的插件就是通过继承Interceptor拦截器实现的,在没有完全理解插件之前j禁止使用插件对mybatis进行扩展,有可能会导 ...

  6. Agumaster 将爬虫取股票名称代号子系统分出来成agumaster_crawler, 两系统通过RabbitMq连接

    agumaster_crawler系统负责启动爬虫取得数据,之后便往队列中推送. agumaster_crawler系统中pom.xml关于RabbitMq的依赖是: <!-- RabbitMq ...

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

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

  8. Medium

    https://www.medium.com 破解阅读限制 https://medium-unlimited.ml/download/

  9. 基于jQuery的鼠标悬停时放大图片的效果制作

    这是一个基于jQuery的效果,当鼠标在小图片上悬停时,会弹出一个大图,该大图会跟随鼠标的移动而移动.这个效果最初源于小敏同志的一个想法,刚开始做的时候只能实现弹出的图片是固定的,不能随鼠标移动,最后 ...

  10. 喵的Unity游戏开发之路 - 多场景:场景加载

    如果丢失格式.图片或视频,请查看原文:https://mp.weixin.qq.com/s/RDVMg6l41uc2IHBsscc0cQ 很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始 ...