Więc celowo próbowałem złamać mój program i udało mi się.SQLite - wyjątek executeUpdate nie zostanie przechwycony, gdy baza danych nie istnieje? (Java)
Usunąłem bazę danych sqlite, z której korzysta program, gdy program był uruchomiony, po tym, jak już utworzyłem połączenie. Następnie podjąłem próbę zaktualizowania bazy danych w sposób przedstawiony poniżej.
Statement stmt;
try
{
stmt = Foo.con.createStatement();
stmt.executeUpdate("INSERT INTO "+table+" VALUES (\'" + itemToAdd + "\')");
}
catch(SQLException e)
{
System.out.println("Error: " + e.toString());
}
Problem polega na tym, że nie złapać wyjątek, a nadal działać jako jeśli baza danych została zaktualizowana pomyślnie. Tymczasem baza danych nawet nie istniała w tym miejscu, ponieważ to było po tym, jak ją usunąłem.
- Czy to nie sprawdza, czy baza danych nadal istnieje podczas aktualizacji?
- Czy muszę ręcznie sprawdzać połączenie z bazą danych, za każdym razem, gdy aktualizuję, aby upewnić się, że baza danych nie została uszkodzona/usunięta?
- Czy tak się zwykle robi, czy jest prostsze/bardziej niezawodne podejście?
Dziękuję.
Przed dalszą analizą, 1) Wydrukowałem ciąg połączenia i upewniłem się, że wskazuje on dowolną bazę danych, która została usunięta. 2) Upewnij się, że baza danych naprawdę nie działa. – kosa
Na jakiej platformie pracujesz? Windows, Linux, Mac? –