By GokiSoft.com| 20:45 12/06/2024|
Java Advanced

[Share Code] Tìm hiểu về CSDL trong Java - C2307L


#Hotels.java


/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package com.gokisoft.lesson05;

import java.util.Scanner;

/**
 *
 * @author teacher
 */
public class Hotels {
    int id;
    String name;
    String hotline;
    String ownerName;
    String address;

    public Hotels() {
    }

    public Hotels(int id, String name, String hotline, String ownerName, String address) {
        this.id = id;
        this.name = name;
        this.hotline = hotline;
        this.ownerName = ownerName;
        this.address = address;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getHotline() {
        return hotline;
    }

    public void setHotline(String hotline) {
        this.hotline = hotline;
    }

    public String getOwnerName() {
        return ownerName;
    }

    public void setOwnerName(String ownerName) {
        this.ownerName = ownerName;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
    
    public void input() {
        Scanner scan = new Scanner(System.in);
        
        System.out.println("Nhap ten: ");
        name = scan.nextLine();
        System.out.println("Nhap SDT: ");
        hotline = scan.nextLine();
        System.out.println("Nhap chu KS: ");
        ownerName = scan.nextLine();
        System.out.println("Nhap dia chi: ");
        address = scan.nextLine();
    }

    @Override
    public String toString() {
        return "id=" + id + ", name=" + name + ", hotline=" + hotline + ", ownerName=" + ownerName + ", address=" + address;
    }
    
    public void display() {
        System.out.println(this);
    }
}


#HotelsCRUD.java


/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package com.gokisoft.lesson05;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author teacher
 */
public class HotelsCRUD {
    public static List<Hotels> findAll() {
        List<Hotels> dataList = new ArrayList<>();
        
        Connection con = null;
        PreparedStatement statement = null;
        try {
            //KET NOI CSDL
            //B1. Tao ket noi toi CSDL
            con = DriverManager.getConnection("jdbc:mysql://localhost:3308/hotel_management", "root", "");
            //B2. Truy van de lay du lieu
            //String sql = "select id, name, hotline, owner_name, address from hotels";
            String sql = "select * from hotels";
            statement = con.prepareStatement(sql);
            ResultSet resultSet = statement.executeQuery();
            
            while(resultSet.next()) {
                Hotels hotel = new Hotels(
                        resultSet.getInt("id"), 
                        resultSet.getString("name"), 
                        resultSet.getString("hotline"), 
                        resultSet.getString("owner_name"), 
                        resultSet.getString("address")
                );
                dataList.add(hotel);
            }
        } catch (SQLException ex) {
            Logger.getLogger(HotelsCRUD.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            //B3. Dong ket noi toi CSDL
            if(statement != null) {
                try {
                    statement.close();
                } catch (SQLException ex) {
                    Logger.getLogger(HotelsCRUD.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            if(con != null) {
                try {
                    con.close();
                } catch (SQLException ex) {
                    Logger.getLogger(HotelsCRUD.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
        
        return dataList;
    }
    
    public static void insert(Hotels item) {
        Connection con = null;
        PreparedStatement statement = null;
        try {
            //KET NOI CSDL
            //B1. Tao ket noi toi CSDL
            con = DriverManager.getConnection("jdbc:mysql://localhost:3308/hotel_management", "root", "");
            //B2. Truy van de lay du lieu
            String sql = "insert into hotels(name, hotline, owner_name, address) values (?, ?, ?, ?)";
            statement = con.prepareStatement(sql);
            
            statement.setString(1, item.getName());
            statement.setString(2, item.getHotline());
            statement.setString(3, item.getOwnerName());
            statement.setString(4, item.getAddress());
            
            statement.execute();
        } catch (SQLException ex) {
            Logger.getLogger(HotelsCRUD.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            //B3. Dong ket noi toi CSDL
            if(statement != null) {
                try {
                    statement.close();
                } catch (SQLException ex) {
                    Logger.getLogger(HotelsCRUD.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            if(con != null) {
                try {
                    con.close();
                } catch (SQLException ex) {
                    Logger.getLogger(HotelsCRUD.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }
    
    public static void update(Hotels item) {
        Connection con = null;
        PreparedStatement statement = null;
        try {
            //KET NOI CSDL
            //B1. Tao ket noi toi CSDL
            con = DriverManager.getConnection("jdbc:mysql://localhost:3308/hotel_management", "root", "");
            //B2. Truy van de lay du lieu
            String sql = "update hotels set name=?,hotline=?,owner_name=?,address=? where id = ?";
            statement = con.prepareStatement(sql);
            
            statement.setString(1, item.getName());
            statement.setString(2, item.getHotline());
            statement.setString(3, item.getOwnerName());
            statement.setString(4, item.getAddress());
            statement.setInt(5, item.getId());
            
            statement.execute();
        } catch (SQLException ex) {
            Logger.getLogger(HotelsCRUD.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            //B3. Dong ket noi toi CSDL
            if(statement != null) {
                try {
                    statement.close();
                } catch (SQLException ex) {
                    Logger.getLogger(HotelsCRUD.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            if(con != null) {
                try {
                    con.close();
                } catch (SQLException ex) {
                    Logger.getLogger(HotelsCRUD.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }
}


#Main.java


/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package com.gokisoft.lesson05;

import java.util.List;
import java.util.Scanner;

/**
 *
 * @author teacher
 */
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int choose;
        
        do {            
            showMenu();
            choose = Integer.parseInt(scan.nextLine());
            
            switch (choose) {
                case 1 -> input();
                case 2 -> edit();
                case 3 -> search();
                case 4 -> remove();
                case 5 -> display();
                case 6 -> System.out.println("Thoat!!!");
                default -> System.out.println("Nhap sai!!!");
            }
        } while (choose != 6);
    }
    
    static void showMenu() {
        System.out.println("1. Them khach san");
        System.out.println("2. Sua khach san");
        System.out.println("3. Tim kiem khach san");
        System.out.println("4. Xoa khach san");
        System.out.println("5. Hien thi");
        System.out.println("6. Thoat");
        System.out.println("Chon: ");
    }

    private static void input() {
        Hotels hotel = new Hotels();
        hotel.input();
        
        HotelsCRUD.insert(hotel);
    }

    private static void edit() {
        //Cach don gian nhat
        Scanner scan = new Scanner(System.in);
        System.out.println("Nhap ID khach san can sua: ");
        int id = Integer.parseInt(scan.nextLine());
        
        Hotels hotel = new Hotels();
        hotel.input();
        hotel.setId(id);
        
        HotelsCRUD.update(hotel);
    }

    private static void search() {
    }

    private static void remove() {
    }

    private static void display() {
        List<Hotels> dataList = HotelsCRUD.findAll();
        System.out.println("=== DANH SACH KHACH SAN ===");
        for (Hotels hotels : dataList) {
            hotels.display();
        }
    }
}


#readme.txt


Nội dung kiến thức:
	- CSDL (MySQL, SQL Server, Oracle, ...)
		- Môi trường
		- Thư viện
		- CRUD (Thêm, sưa, xóa, hiển thị danh sách)
		- ORM

Dự án: Viết chương trình quản lý khách sạn. Hiển thị danh sách, thêm, sửa, xóa
	1. Thêm khách sạn
	2. Sửa khách sạn
	3. Tìm kiếm theo tên
	4. Xóa
	5. Hiển thị danh sách
	6. Thoát

Các bước phát triển dự án:
1) Hiểu về bản chất của tạo dự án -> CSDL
2) Tạo dự án, thiết lập sql (mysql, phpmyadmin)
3) Tải thư viện jdbc mysql
4) Tạo CSDL
create database hotel_management;
create table hotels (
	id int primary key auto_increment,
	name varchar(50),
	hotline varchar(20),
	owner_name varchar(50),
	address varchar(200)
)
5) Code khung du an
6) Ket noi du lieu (Java <-> CSDL)

================================== TỐI ƯU CODE ==============================


#BaseCRUD.java


/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package com.gokisoft.lesson05;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author teacher
 * @param <T>
 */
public abstract class BaseCRUD<T> {
    Connection con = null;
    PreparedStatement statement = null;

    public void openConnection() {
        try {
            //KET NOI CSDL
            //B1. Tao ket noi toi CSDL
            con = DriverManager.getConnection(Config.HOST, Config.USERNAME, Config.PASSWORD);
        } catch (SQLException ex) {
            Logger.getLogger(HotelsCRUD.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void closeConnection() {
        //B3. Dong ket noi toi CSDL
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException ex) {
                Logger.getLogger(HotelsCRUD.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        if (con != null) {
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(HotelsCRUD.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    
    public abstract List<T> findAll();
    public abstract void insert(T item);
    public abstract void update(T item);
    public abstract void delete(T item);
}


#Config.java


/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
 */
package com.gokisoft.lesson05;

/**
 *
 * @author teacher
 */
public interface Config {
    String HOST = "jdbc:mysql://localhost:3308/hotel_management";
    String USERNAME = "root";
    String PASSWORD = "";
}


#Hotels.java


/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package com.gokisoft.lesson05;

import java.util.Scanner;

/**
 *
 * @author teacher
 */
public class Hotels {
    int id;
    String name;
    String hotline;
    String ownerName;
    String address;

    public Hotels() {
    }

    public Hotels(int id, String name, String hotline, String ownerName, String address) {
        this.id = id;
        this.name = name;
        this.hotline = hotline;
        this.ownerName = ownerName;
        this.address = address;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getHotline() {
        return hotline;
    }

    public void setHotline(String hotline) {
        this.hotline = hotline;
    }

    public String getOwnerName() {
        return ownerName;
    }

    public void setOwnerName(String ownerName) {
        this.ownerName = ownerName;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
    
    public void input() {
        Scanner scan = new Scanner(System.in);
        
        System.out.println("Nhap ten: ");
        name = scan.nextLine();
        System.out.println("Nhap SDT: ");
        hotline = scan.nextLine();
        System.out.println("Nhap chu KS: ");
        ownerName = scan.nextLine();
        System.out.println("Nhap dia chi: ");
        address = scan.nextLine();
    }

    @Override
    public String toString() {
        return "id=" + id + ", name=" + name + ", hotline=" + hotline + ", ownerName=" + ownerName + ", address=" + address;
    }
    
    public void display() {
        System.out.println(this);
    }
}


#HotelsCRUD.java


/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package com.gokisoft.lesson05;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author teacher
 */
public class HotelsCRUD extends BaseCRUD<Hotels>{
    @Override
    public List<Hotels> findAll() {
        List<Hotels> dataList = new ArrayList<>();

        openConnection();
        try {
            //B2. Truy van de lay du lieu
            //String sql = "select id, name, hotline, owner_name, address from hotels";
            String sql = "select * from hotels";
            statement = con.prepareStatement(sql);
            ResultSet resultSet = statement.executeQuery();

            while (resultSet.next()) {
                Hotels hotel = new Hotels(
                        resultSet.getInt("id"),
                        resultSet.getString("name"),
                        resultSet.getString("hotline"),
                        resultSet.getString("owner_name"),
                        resultSet.getString("address")
                );
                dataList.add(hotel);
            }
        } catch (SQLException e) {
        }
        
        closeConnection();

        return dataList;
    }

    @Override
    public void insert(Hotels item) {
        openConnection();
        try {
            //B2. Truy van de lay du lieu
            String sql = "insert into hotels(name, hotline, owner_name, address) values (?, ?, ?, ?)";
            statement = con.prepareStatement(sql);

            statement.setString(1, item.getName());
            statement.setString(2, item.getHotline());
            statement.setString(3, item.getOwnerName());
            statement.setString(4, item.getAddress());

            statement.execute();
        } catch (SQLException e) {
        }
        closeConnection();
    }

    @Override
    public void update(Hotels item) {
        openConnection();
        try {
            //B2. Truy van de lay du lieu
            String sql = "update hotels set name=?,hotline=?,owner_name=?,address=? where id = ?";
            statement = con.prepareStatement(sql);

            statement.setString(1, item.getName());
            statement.setString(2, item.getHotline());
            statement.setString(3, item.getOwnerName());
            statement.setString(4, item.getAddress());
            statement.setInt(5, item.getId());

            statement.execute();
        } catch (SQLException e) {
        }
        closeConnection();
    }

    @Override
    public void delete(Hotels item) {
    }
}


#Main.java


/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package com.gokisoft.lesson05;

import java.util.List;
import java.util.Scanner;

/**
 *
 * @author teacher
 */
public class Main {
    static HotelsCRUD hotelsCRUD = new HotelsCRUD();
    
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int choose;
        
        do {            
            showMenu();
            choose = Integer.parseInt(scan.nextLine());
            
            switch (choose) {
                case 1 -> input();
                case 2 -> edit();
                case 3 -> search();
                case 4 -> remove();
                case 5 -> display();
                case 6 -> System.out.println("Thoat!!!");
                default -> System.out.println("Nhap sai!!!");
            }
        } while (choose != 6);
    }
    
    static void showMenu() {
        System.out.println("1. Them khach san");
        System.out.println("2. Sua khach san");
        System.out.println("3. Tim kiem khach san");
        System.out.println("4. Xoa khach san");
        System.out.println("5. Hien thi");
        System.out.println("6. Thoat");
        System.out.println("Chon: ");
    }

    private static void input() {
        Hotels hotel = new Hotels();
        hotel.input();
        
        hotelsCRUD.insert(hotel);
    }

    private static void edit() {
        //Cach don gian nhat
        Scanner scan = new Scanner(System.in);
        System.out.println("Nhap ID khach san can sua: ");
        int id = Integer.parseInt(scan.nextLine());
        
        Hotels hotel = new Hotels();
        hotel.input();
        hotel.setId(id);
        
        hotelsCRUD.update(hotel);
    }

    private static void search() {
    }

    private static void remove() {
    }

    private static void display() {
        List<Hotels> dataList = hotelsCRUD.findAll();
        System.out.println("=== DANH SACH KHACH SAN ===");
        for (Hotels hotels : dataList) {
            hotels.display();
        }
    }
}


#readme.txt


Nội dung kiến thức:
	- CSDL (MySQL, SQL Server, Oracle, ...)
		- Môi trường
		- Thư viện
		- CRUD (Thêm, sưa, xóa, hiển thị danh sách)
		- ORM

Dự án: Viết chương trình quản lý khách sạn. Hiển thị danh sách, thêm, sửa, xóa
	1. Thêm khách sạn
	2. Sửa khách sạn
	3. Tìm kiếm theo tên
	4. Xóa
	5. Hiển thị danh sách
	6. Thoát

Các bước phát triển dự án:
1) Hiểu về bản chất của tạo dự án -> CSDL
2) Tạo dự án, thiết lập sql (mysql, phpmyadmin)
3) Tải thư viện jdbc mysql
4) Tạo CSDL
create database hotel_management;
create table hotels (
	id int primary key auto_increment,
	name varchar(50),
	hotline varchar(20),
	owner_name varchar(50),
	address varchar(200)
)
5) Code khung du an
6) Ket noi du lieu (Java <-> CSDL)


Tags:



Đăng nhập để làm bài kiểm tra

Chưa có kết quả nào trước đó