Diskuze: JAVAFX POMOC
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Tipl bych si, že preparedStatement ve finally bloku LoginModel.isLogin je
null, tedy preparedStatement = connection.prepareStatement(query);
vyhodí výjimku. Tu pomocí debugeru zachyť a zjisti, proč tam je.
padá to ve finaly a to proto že zavíráš dřív preparedStatement než resultSet. Existuje pravidlo, že streamy(objekty) navazující na sebe se likvidují přesně opačném pořadí. Takže pokud první ukončíš resultSet a po něm preparedStatement vše bude v pořádku.
} finally {
preparedStatement.close();
resultSet.close();
}
změn na toto
} finally {
resultSet.close();
preparedStatement.close();
}
Zřejmě zadáváš špatné přihlašovací údaje a preparedStatement tak zůstane null. Měl bys před pokusem ho uzavřit nejprve otestovat zda není null:
} finaly {
if (preparedStatement != null) {
preparedStatement.close();
}
a ještě lépe rovnou požívat novější try-with-resources konstrukci:
try (PreparedStatement preparedStatement = connection.prepareStatement(query)) {
//práce s preparedStatement...
} catch (SQLException e) {
//reakce na odchycenou výjimku, btw měl bys správně odchytávat SQLException místo obyčejné Exception...
}
//větev finally s preparedStatement.close() není potřeba, o správné uzavření je postaráno za tebe...
více o try-with-resources: https://docs.oracle.com/…ceClose.html
taky
if(resultSet.next()) {
return true;
} else {
return false;
}
se dá nahradit jednoduchým
return resultSet.next();
Všem moc děkuji za pomoc a ochotu již vše funguje v pořádku.
Nakonec jsem slepej .. , ale kód jsem upravil podle rad, jsem velmi vděčný a
ještě jednou moc děkuji
public class SqliteConnection {
public static Connection Connector() {
try {
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:db_min.sqlite"); //zde má být mim.sqlite
return conn;
} catch (Exception e) {
System.out.println(e);
return null;
}
}
Zobrazeno 6 zpráv z 6.