mizzsugar’s blog

日々感じていることや学んだことを書きます。エンジニアリング以外にも書くかもしれません。

【Java入門】データベースの情報にデータを挿入、データを削除、データを修正する

mizzsugar.hatenablog.com

↑こちらの記事と同じデータを利用しています。

今回は、この生徒一覧表テーブルから、情報を取得します。

f:id:mizzsugar:20180608083541p:plain

SQL文にすると

CREATE TABLE `students` (
    `id`    INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    `name`  TEXT NOT NULL,
    `grade` INTEGER NOT NULL
);

Studentクラス

public class Student {

    private int id;
    private String name;
    private int schoolId;
    private int grade;

    public Student(int id, String name, int schoolId, int grade) {
        this.id = id;
        this.name = name;
        this.schoolId = schoolId;
        this.grade = grade;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public int getSchoolId() {
        return schoolId;
    }

    public int getGrade() {
        return grade;
    }

    public void setName(String name) {
        this.name = name;
    }
    
    private static String getSqlite3Path(){
        return System.getProperty("user.dir") + File.separator + "sql" + File.separator + "juku.sqlite3";
    }


//データを挿入するメソッド。引数は挿入する内容となる値。
    public static void insert(String name, int schoolId, int grade) {
        try {
            Connection connection = DriverManager.getConnection("jdbc:sqlite:" + getSqlite3Path());
            PreparedStatement prepareStatement = connection
                    .prepareStatement("INSERT INTO students(name, school_id, grade) VALUES(?, ?, ?);");
            prepareStatement.setString(1, name);
            prepareStatement.setInt(2, schoolId);
            prepareStatement.setInt(3, grade);
            prepareStatement.execute();

        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
    
//削除するメソッド。
    public void delete() {
        try {
            Connection connection = DriverManager.getConnection("jdbc:sqlite:" + getSqlite3Path());
            PreparedStatement prepareStatement = connection
                    .prepareStatement("DELETE FROM students WHERE id = ?;"); 
            prepareStatement.setInt(1, id);
            prepareStatement.execute();

        } catch (SQLException e) {
            e.printStackTrace();
        }
        
    }

//修正するメソッド。
    public void update() {
        try {
            Connection connection = DriverManager.getConnection("jdbc:sqlite:" + getSqlite3Path());
            PreparedStatement prepareStatement = connection
                    .prepareStatement("UPDATE students SET name = ? WHERE id = ?;");
            prepareStatement.setString(1, name);
            prepareStatement.setInt(2, id);
            prepareStatement.execute();

        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

}