SQLite - 当数据库不存在时未捕获executeUpdate异常? (JAVA)

时间:2013-09-24 16:40:36

标签: java database sqlite exception

所以我故意试图打破我的计划,我已经成功了。

在我创建连接之后,我删除了程序使用的sqlite数据库,而程序正在运行。然后我尝试更新数据库,如下所示。

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

问题是,它没有捕获异常,并继续运行,就好像数据库已成功更新一样。与此同时,数据库甚至不存在,因为这是在我删除它之后。

  • 在更新时是否检查数据库是否仍然存在?
  • 我是否必须手动检查数据库连接,每次更新以确保数据库没有损坏/删除?
  • 这是通常的方式,还是有更简单/更健全的方法?

谢谢。

2 个答案:

答案 0 :(得分:1)

有趣的是,我发现如果我在使用数据库时删除数据库然后尝试更新数据库,它会在新位置更新数据库(在垃圾箱中!)。您无法在垃圾箱中永久删除它,并且您正在通过程序访问它。

答案 1 :(得分: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());
}