5

だから私はわざとプログラムを壊そうとしましたが、成功しました。

既に接続を作成した後、プログラムの実行中に、プログラムが使用する sqlite データベースを削除しました。次に、以下に示すようにデータベースを更新しようとしました。

Statement stmt;
try
{
    stmt = Foo.con.createStatement();
    stmt.executeUpdate("INSERT INTO "+table+" VALUES (\'" + itemToAdd + "\')");
}
catch(SQLException e)
{
    System.out.println("Error: " + e.toString());
}

問題は、例外をキャッチせず、データベースが正常に更新されたかのように実行し続けたことです。一方、これは削除した後だったので、その時点ではデータベースは存在しませんでした。

  • 更新時にデータベースがまだ存在するかどうかを確認しませんか?
  • データベースが破損/削除されていないことを確認するために、更新するたびにデータベース接続を手動で確認する必要がありますか?
  • これは通常の方法ですか、それともよりシンプルで堅牢なアプローチがありますか?

ありがとうございました。

4

2 に答える 2

0

これはスローされるSQLExceptionではないようです...

すべての例外タイプをキャッチして、エラーが発生するかどうかを確認してください。

Statement stmt;
try
{
    stmt = Foo.con.createStatement();
    stmt.executeUpdate("INSERT INTO "+table+" VALUES (\'" + itemToAdd + "\')");
}
catch(Exception e)
{
    System.out.println("Error: " + e.toString());
}

また

Statement stmt;
try
{
    stmt = Foo.con.createStatement();
    stmt.executeUpdate("INSERT INTO "+table+" VALUES (\'" + itemToAdd + "\')");
}
catch(Throwable e)
{
    System.out.println("Error: " + e.toString());
}
于 2013-09-24T16:43:08.747 に答える