package sample.DBJ;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
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 searchId(String sql) throws SQLException,ClassNotFoundException {
// データの表示内容を作る --- コレクションクラスのインスタンスを作りリストのdataプロパティを定義
ObservableList data = FXCollections.observableArrayList();
// SQLを作成
String idSql = "SELECT * FROM sampleTbl WHERE id="+sql;
try {
// SqliteDbクラスへSQLを発行して結果を取得
ResultSet rs = SqliteDB.dataQuery(idSql);
// データ内容を取得
data = (ObservableList) searchIdData(rs);
return data;
} catch (SQLException ex) {
System.out.println("番号" + sql + "の検索に失敗しました!。\n" + ex);
throw ex;
}
}
// id検索(データ取得)
private static ObservableList searchIdData(ResultSet rs) throws SQLException {
ObservableList data = FXCollections.observableArrayList();
if (rs.next()){
data.add(new SampleModel(
rs.getInt("id"),
rs.getString("name"),
rs.getString("address"),
rs.getString("memo"),
rs.getString("created_at"),
rs.getString("updated_at")
));
}
return data;
}
// 全件検索
public static List searchAllData() throws SQLException, ClassNotFoundException {
// SQL作成
String sql = "SELECT * FROM sampleTbl";
try {
ResultSet rs = SqliteDB.dataQuery(sql);
ObservableList data = searchAllDataList(rs);
return data;
} catch (SQLException ex) {
System.out.println("全件の検索に失敗しました!。\n" + ex);
throw ex;
}
}
// 全件検索(データ取得)
private static ObservableList searchAllDataList(ResultSet rs) throws SQLException, ClassNotFoundException {
ObservableList data = FXCollections.observableArrayList();
while (rs.next()){
data.add(new SampleModel(
rs.getInt("id"),
rs.getString("name"),
rs.getString("address"),
rs.getString("memo"),
rs.getString("created_at"),
rs.getString("updated_at")));
}
return data;
}
// memo更新
public static boolean dataUpdate (String upId, String upMemo) throws SQLException, ClassNotFoundException {
Alert update_alert = new Alert (Alert.AlertType.CONFIRMATION);
update_alert.setTitle("JavaFXSampleDataBase");
update_alert.setHeaderText("更新確認");
update_alert.setContentText(upId + "番のデータを更新します。\n"
+ "間違いなければOKボタンを押してください。");
Optional result = update_alert.showAndWait();
if(result.get() != ButtonType.OK){
return false;
}
// 日時更新
String updatedTime = "datetime(CURRENT_TIMESTAMP,'localtime')";
// SQL作成
String upSql;
upSql = "UPDATE sampleTbl SET updated_at = " + updatedTime + ", memo = '" + upMemo + "' WHERE id = " + upId ;
try {
SqliteDB.dbUpdate(upSql);
return true;
} 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("JavaFXSampleDataBase");
del_alert.setHeaderText("削除確認");
del_alert.setContentText(delId + "番のデータを削除します。\n"
+ "間違いなければOKボタンを押してください。");
Optional result = del_alert.showAndWait();
if(result.get() != ButtonType.OK){
return false;
}
// SQL作成
String delSql;
delSql = "DELETE FROM sampleTbl" + " WHERE id = " + delId;
try {
SqliteDB.dbUpdate(delSql);
return true;
} catch (SQLException ex) {
System.out.print("削除に失敗しました!。\n" + ex);
throw ex;
}
}
}