[ad_1]
Sart > 構成の編集 > + > アプリケーション > 名前: Stat 引数: –stat > 適用
Sart > 構成の編集 > + > アプリケーション > 名前: GUI > 適用
モジュール情報.java:
java.sqlが必要です。
pom.xml の依存関係:
<依存関係>
<グループID>mysql
<バージョン>8.0.33
私が試したこと:
public class Main { public static void main(String[] args) { if(Arrays.asList(args).contains("--stat")) { Statisztika.run(); } else { HelloApplication.main(args); } } }
解決策 1
public class Statisztika { private static List<Member> members; public static void run() { try { ReadMembersFromDatabase(); System.out.println("Kitiltott tagok száma: " + countBannedMembers()); System.out.println(isYoungerThan18() + " a tagok között 18 évnél fiatalabb személy."); System.out.println("A legidősebb klubtag: " + getOldestMember()); System.out.println("Tagok száma:"); /*System.out.println("Nők: " + getCount("F")); System.out.println("Férfiak: " + getCount("M")); System.out.println("Ismeretlen: " + getCount(""));*/ Scanner sc = new Scanner(System.in); System.out.println("Adjon meg egy nevet:"); /*String name = sc.next(); System.out.println(isMemberBanned(name));*/ } catch (SQLException e) { System.out.println("Nem sikerült csatlakozni adatbázishoz, az alkalmazás leáll"); System.out.println(e.getMessage()); } } private static String isMemberBanned(String name) { int index = 0; int count = 0; for(Member member:members){ if(member.getName().equals(name)){ index = count; } count++; } if(index == 0){ return "Nincs ilyen tagja a klubnak"; }else if(members.get(count).isBanned() == false) { return "A megadott személy nincs kitiltva"; }else{ return "A megadott személy ki van tiltva"; } } private static int getCount(String gender) { int count = 0; for(Member member: members){ if(member.getGender().equals(gender)){ count++; } } return count; } private static String getOldestMember() { Member oldest = members.get(0); for(Member member: members){ if(member.getBirth_date().isBefore(oldest.getBirth_date())){ oldest = member; } } return oldest.getName() + " (" + oldest.getBirth_date() + ")"; } private static String isYoungerThan18() { String result = "Nincs"; for(Member member: members){ if(Period.between(member.getBirth_date(), LocalDate.now()).getYears() < 18){ result = "Van"; } } return result; } private static int countBannedMembers() { int count = 0; for(Member member: members) { if(member.isBanned()){ count ++; } } return count; } private static void ReadMembersFromDatabase() throws SQLException { DBHelper db = new DBHelper(); members = db.readMembers(); } }
解決策 2
パブリック静的文字列 DB_DRIVER = “mysql”;
パブリック静的文字列 DB_HOST = “ローカルホスト”;
パブリック静的文字列 DB_PORT = “3306”;
public static String DB_DBNAME = “メンバー”;
パブリック静的文字列 DB_USER = “ルート”;
パブリック静的文字列 DB_PASS = “”;
プライベート接続接続;
public DBHelper() は SQLException をスローします {
文字列 url = String.format(“jdbc:%s://%s:%s/%s”, DB_DRIVER, DB_HOST, DB_PORT, DB_DBNAME);
接続 = DriverManager.getConnection(url, DB_USER, DB_PASS);
}
public List
List
文字列 sql = “SELECT * FROM メンバー”;
ステートメント ステートメント = connection.createStatement();
ResultSet 結果 = ステートメント.executeQuery(sql);
while(result.next()) {
int id = result.getInt(“id”);
文字列名 = result.getString(“名前”);
文字列性別 = result.getString(“性別”);
LocalDate 誕生日 = result.getDate(“誕生日”).toLocalDate();
ブール値禁止 = result.getBoolean(“禁止”);
メンバー member = 新しいメンバー(id,名前,性別,生年月日,禁止);
members.add(メンバー);
}
メンバーを戻す。
}
public boolean changeBanned(Member member) throws SQLException {
文字列 sql = “更新メンバーのセット禁止 = ? WHERE id = ?”;
PreparedStatement ステートメント = connection.prepareStatement(sql);
ステートメント.setBoolean(1, !member.isBanned());
ステートメント.setInt(2, member.getId());
戻りステートメント.executeUpdate() == 1;
}
解決策 3
public class HelloController { @FXML private Button banBtn; @FXML private TableView<Member> members; @FXML private TableColumn<Member, String> nameCol; @FXML private TableColumn<Member, String> genderCol; @FXML private TableColumn<Member, LocalDate> birth_dateCol; @FXML private TableColumn<Member, String> bannedCol; private DBHelper db; public void initialize(){ nameCol.setCellValueFactory(new PropertyValueFactory<>("name")); genderCol.setCellValueFactory(new PropertyValueFactory<>("gender")); birth_dateCol.setCellValueFactory(new PropertyValueFactory<>("birth_date")); bannedCol.setCellValueFactory((new PropertyValueFactory<>("banned"))); try { db = new DBHelper(); refreshTable(); } catch (SQLException e) { Platform.runLater(() -> { alert(Alert.AlertType.ERROR, "Nem sikerült csatlakozni az adatbázishoz", e.getMessage()); Platform.exit(); }); } } private void refreshTable() throws SQLException { members.getItems().clear(); members.getItems().addAll(db.readMembers()); } private Optional<ButtonType> alert(Alert.AlertType alertType, String headerText, String contentText) { Alert alert = new Alert(alertType); alert.setHeaderText(headerText); alert.setContentText(contentText); return alert.showAndWait(); } @FXML public void banClick(ActionEvent actionEvent){ Member selected = members.getSelectionModel().getSelectedItem(); if(selected == null) { alert(Alert.AlertType.ERROR, "Tiltás módosításához előbb válasszon ki klubtagot",""); return; } String headerText = selected.isBanned() ? "Biztos szeretné visszavonni a kiválasztott klubtag tiltását?" : "Biztos szeretné kitiltani a kiválasztott klubtagot?"; Optional<ButtonType> confirm = alert(Alert.AlertType.CONFIRMATION, headerText, ""); if(confirm.isPresent() && confirm.get().equals(ButtonType.OK)){ changeBanned(selected); } } private void changeBanned(Member selected) { try { if(db.changeBanned(selected)){ alert(Alert.AlertType.INFORMATION, "Sikeres módosítás", ""); } else { alert(Alert.AlertType.INFORMATION, "Sikertelen módosítás", ""); } refreshTable(); } catch (SQLException e) { alert(Alert.AlertType.ERROR, "Hiba történt a módosítás során", e.getMessage()); } } }
[ad_2]
コメント