0.准备工作

开发工具: MySQL数据库, intelliJ IDEA2017.

准备jar包: mysql-connector-java-5.1.28-bin.jar(其他均可)

1. 数据库数据准备

2. 项目结构图示

3.代码

实体类Book.java

package com.zzuli.entity;

import java.util.Date;

/**
*
* 图书实体类
* Created by hejjon on 2019/5/25.
*/
public class Book {
private int id;
private String bookName;
private String author;
private Date pubDate; // 出版日期 util.Date public Book() {
} public Book(int id, String bookName, String author, Date pubDate) {
this.id = id;
this.bookName = bookName;
this.author = author;
this.pubDate = pubDate;
} public Book(String bookName, String author, Date pubDate) {
this.bookName = bookName;
this.author = author;
this.pubDate = pubDate;
} public int getId() {
return id;
} public String getBookName() {
return bookName;
} public String getAuthor() {
return author;
} public Date getPubDate() {
return pubDate;
} public void setId(int id) {
this.id = id;
} public void setBookName(String bookName) {
this.bookName = bookName;
} public void setAuthor(String author) {
this.author = author;
} public void setPubDate(Date pubDate) {
this.pubDate = pubDate;
} @Override
public String toString() {
return "Book{" +
"id=" + id +
", bookName='" + bookName + '\'' +
", author='" + author + '\'' +
", pubDate=" + pubDate +
'}';
}
}

Dao层接口 BookDao.java

package com.zzuli.dao;

import com.zzuli.entity.Book;

import java.util.List;

/**
* Created by hejjon on 2019/5/25.
*/
public interface BookDao { /**
* 增添图书
* @param book 要添加的book对象
* @return
*/
int insertBook(Book book); /**
* 删除指定id的图书
* @param id 要删除的图书的id
* @return
*/
int deleteBook(int id); /**
* 修改图书
* @param book 修改后的图书
* @return
*/
int updateBook(Book book); /**
* 查找指定书名的图书
* @param bookName
* @return
*/
Book selectBookByName(String bookName); List<Book> selectAllBook();
}

Dao层实现类: BookDaoImpl.java

package com.zzuli.dao.impl;

import com.zzuli.dao.BookDao;
import com.zzuli.entity.Book; import java.sql.*;
import java.util.ArrayList;
import java.util.List; /**
* Created by hejjon on 2019/5/25.
*/
public class BookDaoImpl implements BookDao { private final String jdbcDriver = "com.mysql.jdbc.Driver";
private final String url = "jdbc:mysql://localhost:3306/db_book";
private final String userName = "root";
private final String password = "123123"; @Override
public int insertBook(Book book) {
int n = 0;
String sql = "insert into t_book values (default,?,?,?)";
Connection conn = null;
PreparedStatement ps = null;
java.sql.Date pubDate = null;
try {
// 加载驱动
Class.forName(jdbcDriver);
// 获取连接
conn = DriverManager.getConnection(url, userName, password);
// 创建会话
ps = conn.prepareStatement(sql);
// 设置 ? 的值
ps.setString(1, book.getBookName());
ps.setString(2, book.getAuthor());
pubDate = new java.sql.Date(book.getPubDate().getTime());
ps.setDate(3, pubDate);
// 执行sql
n = ps.executeUpdate(); } catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally { // 关闭数据库资源
try {
if (null != ps) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (null != conn) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return n;
} @Override
public int deleteBook(int id) {
String sql = "delete from t_book where id=?";
int n = 0;
Connection conn = null;
PreparedStatement ps = null; try {
// 加载驱动
Class.forName(jdbcDriver);
// 获取连接
conn = DriverManager.getConnection(url, userName, password);
// 创建会话
ps = conn.prepareStatement(sql);
// 设置 ? 的值
ps.setInt(1, id);
// 执行sql
n = ps.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (null != ps) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (null != conn) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
} return n;
} @Override
public int updateBook(Book book) {
String sql = "update t_book set bookName=?, author=?, pubDate=? where id=?";
int n = 0;
Connection conn = null;
PreparedStatement ps = null;
try {
// 加载驱动
Class.forName(jdbcDriver);
// 获取连接
conn = DriverManager.getConnection(url, userName, password);
// 创建会话
ps = conn.prepareStatement(sql);
ps.setString(1, book.getBookName());
ps.setString(2, book.getAuthor());
ps.setDate(3, new java.sql.Date(book.getPubDate().getTime()));
ps.setInt(4, book.getId());
n = ps.executeUpdate(); } catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (null != ps) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (null != conn) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return n;
} @Override
public Book selectBookByName(String bookName) {
String sql = "select * from t_book where bookName=?";
Book book = null;
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 加载驱动
Class.forName(jdbcDriver);
// 获取连接
conn = DriverManager.getConnection(url, userName, password);
// 创建会话
ps = conn.prepareStatement(sql);
ps.setString(1, bookName);
rs = ps.executeQuery(); if (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("bookName");
String author = rs.getString("author");
java.util.Date pubDate = rs.getDate("pubDate");
book = new Book(id, name, author, pubDate);
} } catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (null != ps) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (null != conn) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return book;
} @Override
public List<Book> selectAllBook() {
String sql = "select * from t_book";
List<Book> list = new ArrayList<>();
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null; try {
// 加载驱动
Class.forName(jdbcDriver);
// 获取连接
conn = DriverManager.getConnection(url, userName, password);
// 创建会话
ps = conn.prepareStatement(sql);
// 获取结果集
rs = ps.executeQuery();
// 遍历结果集
while (rs.next()) {
int id = rs.getInt("id");
String bookName = rs.getString("bookName");
String author = rs.getString("author");
Date pubDate = rs.getDate("pubDate"); Book book = new Book(id, bookName, author, pubDate);
list.add(book);
} } catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (null != ps) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (null != conn) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
} return list;
}
}

测试类:Test.java

package com.zzuli.test;

import com.zzuli.dao.BookDao;
import com.zzuli.dao.impl.BookDaoImpl;
import com.zzuli.entity.Book; import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; /**
* 测试类
* Created by hejjon on 2019/5/25.
*/
public class Test {
public static void main(String[] args) {
// testInsert();
// testDelete();
// sestUpdate();
// testSelect(); testSelectAllBook(); } private static void testSelectAllBook() {
BookDao bookDao = new BookDaoImpl(); List<Book> list = new ArrayList<>(); list = bookDao.selectAllBook(); for (Book book : list) {
System.out.println(book);
}
} // 测试按书名查找图书
public static void testSelect() {
BookDao bookDao = new BookDaoImpl();
Book book = bookDao.selectBookByName("西游记"); System.out.println(book);
} // 测试修改图书方法
public static void testUpdate() {
// 创建dao层实现类对象
BookDao bookDao = new BookDaoImpl();
String dateStr = "1788-06-15";
Date pubDate = null;
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
pubDate = df.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
} Book book = new Book(2, "西游记", "吴承恩", pubDate); int i = bookDao.updateBook(book); if (i > 0) {
System.out.println("图书修改成功");
} else {
System.out.println("图书修改失败");
}
} // 测试删除图书方法
public static void testDelete() {
BookDao bookDao = new BookDaoImpl();
int i = bookDao.deleteBook(5); if (i > 0) {
System.out.println("删除图书成功");
} else {
System.out.println("删除图书失败");
}
} // 测试添加图书方法
public static void testInsert() {
// 创建dao层实现类对象
BookDao bookDao = new BookDaoImpl();
String dateStr = "1678-09-24";
Date pubDate = null;
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
pubDate = df.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
} Book book = new Book("鹿鼎记", "张三", pubDate); int i = bookDao.insertBook(book); if (i > 0) {
System.out.println("图书添加成功");
} else {
System.out.println("图书添加失败");
}
}
}

4.总结:

java.sql.Date, java.util.Date, String 之间的相互转换:
// String ---> java.util.Date       parse()方法
String DateStr = "1997-02-24";
Date date = null;
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
date = df.parse(DateStr);
} catch (ParseException e) {
e.printStackTrace();
} // java.util.Date ---> String format()方法
System.out.println(df.format(date)); // 1997-02-24 System.out.println(System.currentTimeMillis()); // 1558864421743 // java.util.Date ---> java.sql.Date
java.util.Date utilDate = new java.util.Date(1558864204513L); // 是long类型 L别丢了 java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
System.out.println(utilDate); // Sun May 26 17:50:04 CST 2019
System.out.println(sqlDate); // 2019-05-26
 

 

JDBC简单增删改查实现(单表)的更多相关文章

  1. MySQL:记录的增删改查、单表查询、约束条件、多表查询、连表、子查询、pymysql模块、MySQL内置功能

    数据操作 插入数据(记录): 用insert: 补充:插入查询结果: insert into 表名(字段1,字段2,...字段n) select (字段1,字段2,...字段n) where ...; ...

  2. MySQL 增删改查(单表)

    1.sql 新增语句 表中插入数据 insert into + 表名 values(字段1value1,字段2value1,字段3value1),(字段1value2,字段2value2,字段3val ...

  3. Oracle使用JDBC进行增删改查 表是否存在

    Oracle使用JDBC进行增删改查 数据库和表 table USERS (   USERNAME VARCHAR2(20) not null,   PASSWORD VARCHAR2(20) ) a ...

  4. Mybatis实现简单增删改查

    Mybatis的简单应用 学习内容: 需求 环境准备 代码 总结: 学习内容: 需求 使用Mybatis实现简单增删改查(以下是在IDEA中实现的,其他开发工具中,代码一样) jar 包下载:http ...

  5. ado.net的简单数据库操作(三)——简单增删改查的实际应用

    果然,在犯困的时候就该写写博客,写博客就不困了,哈哈! 上篇我记录了自己的SqlHelper的开发过程,今天记录一下如何使用这个sqlhelper书写一个具有简单增删改查的小实例啦. 实例描述:在数据 ...

  6. 国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作

    专题目录 国产化之路-统信UOS操作系统安装 国产化之路-国产操作系统安装.net core 3.1 sdk 国产化之路-安装WEB服务器 国产化之路-安装达梦DM8数据库 国产化之路-统信UOS + ...

  7. JDBC基础学习(一)—JDBC的增删改查

    一.数据的持久化     持久化(persistence): 把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,数据持久化意味着将内存中的数据保存到硬盘上加以固化,而持久化的实现过程大多通过各 ...

  8. SQL Server -- 回忆笔记(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询

    SQL Server知识点回忆篇(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询 1. insert 如果sql server设置的排序规则不是简体中文,必须在简体中文字符串前加N, ...

  9. Redis:五种数据类型的简单增删改查

    Redis简单增删改查例子 例一:字符串的增删改查 #增加一个key为ay_key的值 127.0.0.1:6379> set ay_key "ay" OK #查询ay_ke ...

随机推荐

  1. 20175211 《实验三 敏捷开发与XP实践》实验报告

    目录 一.实验内容 二.实验步骤 四.实验过程中遇到的问题及其解决方法 五.心得体会 六.码云链接 七.结对成员链接 八.参考资料 一.实验内容 (1)编码标准 (2)Git的使用 (3)重构 (4) ...

  2. SpringBoot(十七):SpringBoot2.1.1数据类型转化器Converter

    什么场景下需要使用类型化器Converter? springboot2.1.1在做Restful Api开发过程中往往希望接口直接接收date类型参数,但是默认不加设置是不支持的,会抛出异常:系统是希 ...

  3. 通过mitmproxy爬取APP的数据

    安装: https://mitmproxy.org/ 小米安装证书 设置->系统安全->从存储设备安装->选择*.pem文件 模拟器安装证书 (请从C:\Users\John\.mi ...

  4. 解决:Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceMode

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/Eric_K1m/article/deta ...

  5. 【推荐】安卓模板项目AndroidProject

    [推荐]安卓模板项目AndroidProject https://github.com/getActivity/AndroidProject 安卓架构 博客地址:但愿人长久,搬砖不再有 当我们日复一日 ...

  6. apache Request-URI Too Large 处理办法

    在Apache的httpd.conf配置文件中(直接加就可以) LimitRequestLine 40940 LimitRequestFieldSize 40940

  7. snf快速开发平台试用演示地址

      BS演示地址: http://49.4.68.200:65432 administrator / Administrator     snf-cs试用版本下载地址:https://pan.baid ...

  8. windows下postgresql数据库备份和还原

    1.通过cmd进入数据库的bin目录 cd C:\Program Files\PostgreSQL\9.6\bin 2.执行pg_dump备份命令,localhost 或者IP pg_dump -h ...

  9. CSAGAN:LinesToFacePhoto: Face Photo Generation from Lines with Conditional Self-Attention Generative Adversarial Network - 1 - 论文学习

    ABSTRACT 在本文中,我们探讨了从线条生成逼真的人脸图像的任务.先前的基于条件生成对抗网络(cGANs)的方法已经证明,当条件图像和输出图像共享对齐良好的结构时,它们能够生成视觉上可信的图像.然 ...

  10. 查找算法(7)--Hash search--哈希查找

    1.哈希查找 (1)什么是哈希表(Hash) 我们使用一个下标范围比较大的数组来存储元素.可以设计一个函数(哈希函数, 也叫做散列函数),使得每个元素的关键字都与一个函数值(即数组下标)相对应,于是用 ...