JDBC連接數(shù)據(jù)庫實(shí)現(xiàn)—手把手教你打造一款簡單的圖書管理系統(tǒng)
大家好,我是Java進(jìn)階者,今天給大家繼續(xù)分享JDBC技術(shù)。
一、前言
圖書館的管理員對(duì)書本進(jìn)行管理,例如對(duì)書本的上架、下架,錄入書本信息等操作,這里面就蘊(yùn)含了豐富的數(shù)據(jù)庫知識(shí)。本文通過所學(xué)的JDBC連接數(shù)據(jù)庫實(shí)現(xiàn)數(shù)據(jù)的訪問的知識(shí),帶大家一起來打造一款簡單的圖書的增刪改查管理系統(tǒng)!
二、項(xiàng)目準(zhǔn)備
操作系統(tǒng):Windows
開發(fā)工具:Eclipse
數(shù)據(jù)庫系統(tǒng):MySQL
編程語言:Java
三、項(xiàng)目目標(biāo)
1)掌握常用的SQL語句的寫法
2)理解數(shù)據(jù)庫的加載和連接
3)掌握J(rèn)DBC對(duì)數(shù)據(jù)庫操作訪問方法
四、項(xiàng)目實(shí)現(xiàn)
(一)創(chuàng)建book表,如下所示:
(二)導(dǎo)入拓展包
1.導(dǎo)入拓展包“mysql-connector-java-5.1.7-bin.jar”,在Ecilpse編輯軟件的當(dāng)前項(xiàng)目右鍵選擇“Bulid Path”,再選擇“Configure Build Path...”,選擇Libraies,在右邊有個(gè)“Add External JARs...”按鈕把這個(gè)拓展包加進(jìn)來,然后點(diǎn)擊“OK”。具體操作如下圖所示:
(三)編寫代碼,如下所示:
Book.java
- public class Book {
- //定義圖書的編號(hào)、名稱、出版社、價(jià)格
- private String id,name,press;
- private double price;
- //構(gòu)造方法
- 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;
- }
- }
在上面代碼中,首先是定義了圖書的編號(hào)、名稱、出版社、價(jià)格的屬性,之后,定義有參數(shù)的構(gòu)造方法,使用訪問器的set屬性名()方法來設(shè)置屬性、get屬性名()方法來獲取屬性。
BookManager.java
- import java.sql.*;
- import java.util.Scanner;
- public class BookManager {
- //定義com.mysql.jdbc的Driver類路徑、數(shù)據(jù)庫的地址、用戶名、密碼
- 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";
- //創(chuàng)建Connection、Statement、ResultSet對(duì)象
- static Connection con;
- static Statement stmt;
- static ResultSet rs;
- public static void main(String[] args) {
- BookManager bm=new BookManager();
- try {
- Class.forName(driver);//加載驅(qū)動(dòng)程序
- System.out.println("加載驅(qū)動(dòng)成功!");
- 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("請(qǐng)輸入你的選擇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("請(qǐng)輸入圖書Id:");
- Scanner sc=new Scanner(System.in);
- String oldid=sc.next();
- System.out.println("請(qǐng)輸入您要更新圖書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("請(qǐng)輸入您要?jiǎng)h除的圖書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("請(qǐng)輸入您要添加的圖書id:");
- String id=sc.next();
- System.out.println("請(qǐng)輸入您要添加的圖書name:");
- String name=sc.next();
- System.out.println("請(qǐng)輸入您要添加的圖書press:");
- String press=sc.next();
- System.out.println("請(qǐng)輸入您要添加的圖書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類路徑、數(shù)據(jù)庫的地址、用戶名、密碼,創(chuàng)建Connection、Statement、ResultSet對(duì)象。
接著使用Class.forName()方法來加載程序驅(qū)動(dòng),之后使用getConnection()方法和數(shù)據(jù)庫進(jìn)行連接,返回一個(gè)Connection對(duì)象,在該對(duì)象的createStatement()方法創(chuàng)建一個(gè)Statement對(duì)象。
根據(jù)用戶的輸入來操作數(shù)據(jù)庫的增刪改查操作,使用switch語句來編寫,例如用戶輸入的數(shù)字是1,表示進(jìn)行插入數(shù)據(jù)的操作。
在代碼中的insertBook()、deleteBook()、updateBook()、queryBook()方法分別表示插入圖書、刪除圖書、更新圖書、查詢圖書。首先是先寫相對(duì)應(yīng)的MySQL語句,使用executeUpdate()方法用于插入圖書、刪除圖書、更新圖書。使用executeQuery()方法用于查詢圖書。
效果圖如下所示:
五、總結(jié)
本文基于JDBC數(shù)據(jù)庫基礎(chǔ),帶大家打造了一款簡易的圖書管理系統(tǒng)。文章介紹了簡單的圖書增刪改查管理的案例,讓讀者能夠熟練的使用JDBC加載驅(qū)動(dòng)程序和學(xué)會(huì)數(shù)據(jù)庫的連接。