JDBC連接數據庫實現—手把手教你打造一款簡單的圖書管理系統
大家好,我是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加載驅動程序和學會數據庫的連接。