大家好,我是Java进阶者,今天给大家继续分享JDBC技术。
一、前言
图书馆的管理员对书本进行管理,例如对书本的上架、下架,录入书本信息等操作,这里面就蕴含了丰富的数据库知识。本文通过所学的JDBC连接数据库实现数据的访问的知识,带大家一起来打造一款简单的图书的增删改查管理系统!
二、项目准备
操作系统:Windows
开发工具:Eclipse
数据库系统:MySQL
编程语言:Java
三、项目目标
1)掌握常用的SQL语句的写法
2)理解数据库的加载和连接
3)掌握JDBC对数据库操作访问方法
四、项目实现
(一)创建book表,如下所示:
(二)导入拓展包
1.导入拓展包“mysql-connector-java-5.1.7-bin.jar”,在Ecilpse编辑软件的当前项目右键选择“Bulid Path”,再选择“Configure Build Path...”,选择Libraies,在右边有个“Add External JARs...”按钮把这个拓展包加进来,然后点击“OK”。具体操作如下图所示:
(三)编写代码,如下所示:
Book.java
- public class Book {
- //定义图书的编号、名称、出版社、价格
- private String id,name,press;
- private double price;
- //构造方法
- public Book(String id, String name, String press, double price) {
- this.id = id;
- this.name = name;
- this.press = press;
- this.price = price;
- }
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getPress() {
- return press;
- }
- public void setPress(String press) {
- this.press = press;
- }
- public double getPrice() {
- return price;
- }
- public void setPrice(double price) {
- this.price = price;
- }
- }
在上面代码中,首先是定义了图书的编号、名称、出版社、价格的属性,之后,定义有参数的构造方法,使用访问器的set属性名()方法来设置属性、get属性名()方法来获取属性。
BookManager.java
- import java.sql.*;
- import java.util.Scanner;
- public class BookManager {
- //定义com.mysql.jdbc的Driver类路径、数据库的地址、用户名、密码
- static String driver ="com.mysql.jdbc.Driver";
- static String url="jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf-8";
- static String user="root";
- static String pwd="168168";
- //创建Connection、Statement、ResultSet对象
- static Connection con;
- static Statement stmt;
- static ResultSet rs;
- public static void main(String[] args) {
- BookManager bm=new BookManager();
- try {
- Class.forName(driver);//加载驱动程序
- System.out.println("加载驱动成功!");
- con=DriverManager.getConnection(url,user,pwd);
- stmt=con.createStatement();
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- //模块化
- System.out.println("1---插入图书");
- System.out.println("2---删除图书");
- System.out.println("3---更新图书信息");
- System.out.println("4---查询图书信息");
- System.out.println("请输入你的选择1~4:");
- Scanner sc=new Scanner(System.in);
- int i=sc.nextInt();
- switch(i){
- case 1:
- insertBook();break;
- case 2:
- deleteBook();break;
- case 3:
- updateBook();break;
- case 4:
- queryBook();break;
- default:
- System.out.println("您的输入有误!");
- }
- }
- private static void queryBook(){//查询
- String sql="select * from book";
- try {
- rs=stmt.executeQuery(sql);
- while(rs.next()){
- System.out.println(rs.getString("id"));
- System.out.println(rs.getString("name"));
- System.out.println(rs.getString("press"));
- System.out.println(rs.getDouble("price"));
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- private static void updateBook(){//修改
- System.out.println("请输入图书Id:");
- Scanner sc=new Scanner(System.in);
- String oldid=sc.next();
- System.out.println("请输入您要更新图书Id:");
- String newid=sc.next();
- String sql="update book set id='"+newid+"' where id='"+oldid+"'";
- try {
- stmt.executeUpdate(sql);
- } catch (SQLException e) {
- e.printStackTrace();
- }
- System.out.println(sql);
- }
- private static void deleteBook(){//删除
- System.out.println("请输入您要删除的图书Id:");
- Scanner sc=new Scanner(System.in);
- String id=sc.next();
- String sql="delete from book where id='"+id+"'";
- System.out.println(sql);
- try {
- stmt.executeUpdate(sql);
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- private static void insertBook(){//插入
- Scanner sc=new Scanner(System.in);
- System.out.println("请输入您要添加的图书id:");
- String id=sc.next();
- System.out.println("请输入您要添加的图书name:");
- String name=sc.next();
- System.out.println("请输入您要添加的图书press:");
- String press=sc.next();
- System.out.println("请输入您要添加的图书price:");
- String price=sc.next();
- try {
- Book b=new Book(id,name,press,Integer.valueOf(price));
- String sql="insert into book values('"+b.getId()+"','"+b.getName()+"','"+b.getPress()+"',"+b.getPrice()+")";
- System.out.println(sql);
- stmt.executeUpdate(sql);
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
在上面代码中,首先是定义了com.mysql.jdbc的Driver类路径、数据库的地址、用户名、密码,创建Connection、Statement、ResultSet对象。
接着使用Class.forName()方法来加载程序驱动,之后使用getConnection()方法和数据库进行连接,返回一个Connection对象,在该对象的createStatement()方法创建一个Statement对象。
根据用户的输入来操作数据库的增删改查操作,使用switch语句来编写,例如用户输入的数字是1,表示进行插入数据的操作。
在代码中的insertBook()、deleteBook()、updateBook()、queryBook()方法分别表示插入图书、删除图书、更新图书、查询图书。首先是先写相对应的MySQL语句,使用executeUpdate()方法用于插入图书、删除图书、更新图书。使用executeQuery()方法用于查询图书。
效果图如下所示:
五、总结
本文基于JDBC数据库基础,带大家打造了一款简易的图书管理系统。文章介绍了简单的图书增删改查管理的案例,让读者能够熟练的使用JDBC加载驱动程序和学会数据库的连接。