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

1

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

于 2013-10-22T03:49:43.790 回答
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 回答