データベース名 ->sample.DB
テーブル名 ->sampleTbl
テーブルの構造
| カラム | タイプ |
| id | INTEGER |
| name | TEXT |
| address | TEXT |
| memo | TEXT |
| date | TIMESTAMP |
package sample.DB;
import java.sql.*;
import javax.sql.rowset.CachedRowSet;
import javax.sql.rowset.RowSetFactory;
import javax.sql.rowset.RowSetProvider;
public class SqliteDB {
private static Connection con = null;
public static void dbCon() throws SQLException, ClassNotFoundException {
Statement stmt = null;
try {
// sqlite JDBCドライバーの読み込み
Class.forName("org.sqlite.JDBC");
} catch (ClassNotFoundException ex) {
System.out.println("JDBCドライバーが見つかりません?。\n" + ex);
throw ex;
}
try {
// データベース接続
con = DriverManager.getConnection("jdbc:sqlite:c:/SQLite/sample.DB");
// ステートメントの生成
stmt = con.createStatement();
// テーブル作成
stmt.executeUpdate("create table if not exists sampleTbl(id integer primary key,name text,address text,memo text,date timestamp NOT NULL default (datetime(CURRENT_TIMESTAMP,'localtime')))");
} catch (SQLException ex) {
System.out.println("DB接続に失敗しました!。\n" + ex);
throw ex;
}
}
// 検索
public static ResultSet dataQuery(String queryStmt) throws SQLException, ClassNotFoundException {
// CachedRowSetはDBから取得したデータを、メモリ上に格納した状態でもデータの処理が可能。
RowSetFactory rowSetFactory = RowSetProvider.newFactory();
CachedRowSet rowSet = rowSetFactory.createCachedRowSet();
Statement stmt = null;
ResultSet resultSet = null;
try {
dbCon();
stmt = con.createStatement();
resultSet = stmt.executeQuery(queryStmt);
// ResultSetオブジェクトのデータをpopulateメソットを使用して読み込みます。
rowSet.populate(resultSet);
} catch (SQLException ex) {
System.out.println("検索に失敗しました!。\n" + ex);
throw ex;
} finally {
if (resultSet != null) {
resultSet.close();
}
if (stmt != null) {
stmt.close();
}
if (con != null) {
con.close();
}
}
return rowSet;
}
// 追加・更新・削除
public static void dbUpdate(String sqlStmt) throws SQLException, ClassNotFoundException {
Statement stmt = null;
try {
dbCon();
stmt = con.createStatement();
stmt.executeUpdate(sqlStmt);
} catch (SQLException ex) {
System.out.println("データの処理に失敗しました!。\n" + ex);
} finally {
if (stmt != null) {
stmt.close();
}
if (con != null) {
con.close();
}
}
}
}
package sample.DBJ;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Optional;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;
import sample.DB.SqliteDB;
import sample.model.SampleModel;
public class SqliteDBJ {
// 登録
public static void insertData (String name, String address, String memo) throws SQLException, ClassNotFoundException {
String insertStmt;
// SQL文の作成
insertStmt = "INSERT INTO sampleTbl" +
"(name, address, memo)" +
"VALUES('" + name + "','" + address + "','" + memo + "')";
try {
// SqliteDBクラスへSQLを発行
SqliteDB.dbUpdate(insertStmt);
} catch (SQLException ex) {
System.out.println("登録処理に失敗しました!。\n" + ex );
throw ex;
}
}
// id検索
public static ObservableList<SampleModel> searchId(String sql) throws SQLException,ClassNotFoundException {
// データの表示内容を作る --- コレクションクラスのインスタンスを作りリストのdataプロパティを定義
ObservableList<SampleModel> data = FXCollections.observableArrayList();
// SQL文の作成
String idSql = "SELECT * FROM sampleTbl WHERE id="+sql;
try {
// SqliteDbクラスへSQLを発行して結果を取得
ResultSet rs = SqliteDB.dataQuery(idSql);
// データ内容を取得
data = (ObservableList<SampleModel>) searchIdData(rs);
return data;
} catch (SQLException ex) {
System.out.println("番号" + sql + "の検索に失敗しました!。\n" + ex);
throw ex;
}
}
// id検索(データ内容取得)
private static ObservableList<SampleModel> searchIdData(ResultSet rs) throws SQLException {
ObservableList<SampleModel> data = FXCollections.observableArrayList();
if (rs.next()){
data.add(new SampleModel(
rs.getInt("id"),
rs.getString("name"),
rs.getString("address"),
rs.getString("memo"),
rs.getString("date")
));
}
return data;
}
// 全件検索
public static ObservableList<SampleModel> searchAllData() throws SQLException, ClassNotFoundException {
String sql = "SELECT * FROM sampleTbl";
try {
ResultSet rs = SqliteDB.dataQuery(sql);
ObservableList<SampleModel> data = searchAllDataList(rs);
return data;
} catch (SQLException ex) {
System.out.println("全件の検索に失敗しました!。\n" + ex);
throw ex;
}
}
// 全件検索(データ内容取得)
private static ObservableList<SampleModel> searchAllDataList(ResultSet rs) throws SQLException, ClassNotFoundException {
ObservableList<SampleModel> data = FXCollections.observableArrayList();
while (rs.next()){
data.add(new SampleModel(
rs.getInt("id"),
rs.getString("name"),
rs.getString("address"),
rs.getString("memo"),
rs.getString("date")));
}
return data;
}
// memo更新
public static void dataUpdate (String upId, String upMemo) throws SQLException, ClassNotFoundException {
String upSql;
upSql = "UPDATE sampleTbl SET memo = '" + upMemo + "' WHERE id = " + upId;
try {
SqliteDB.dbUpdate(upSql);
} catch (SQLException ex) {
System.out.print("更新処理に失敗しました!。\n" + ex);
throw ex;
}
}
// 削除
public static boolean dataDelete (String delId) throws SQLException, ClassNotFoundException {
Alert del_alert = new Alert (Alert.AlertType.CONFIRMATION);
del_alert.setTitle("JavaFXSampleProgram");
del_alert.setHeaderText("削除確認");
if("".equals(delId)){
del_alert.setContentText("削除する番号を入力して下さい !。\n");
Optional result = del_alert.showAndWait();
if(result.get() != ButtonType.OK || result.get() == ButtonType.OK){
return false;
}
} else {
del_alert.setContentText(delId + "番のデータを削除します。\n"
+ "間違いなければOKボタンを押してください。");
Optional result = del_alert.showAndWait();
if(result.get() != ButtonType.OK){
return false;
}
}
String delSql;
delSql = "DELETE FROM sampleTbl" + " WHERE id = " + delId;
try {
SqliteDB.dbUpdate(delSql);
} catch (SQLException ex) {
System.out.print("削除に失敗しました!。\n" + ex);
throw ex;
}
return false;
}
}