【发布时间】:2017-05-17 23:51:29
【问题描述】:
我在我的 Android 中使用 SQLite 作为 Gluon 移动应用程序。当我第一次访问数据库时,它可以正常工作,但另一次我有一个异常:
"Android.database.sqllite.SQLiteDatabaseLocked 异常:数据库是 锁定(代码 5)
访问数据库的代码是:
if (Platform.isAndroid()) {
Class.forName("org.sqldroid.SQLDroidDriver");
try {
dir = Services.get(StorageService.class)
.map(s -> s.getPrivateStorage().get())
.orElseThrow(() -> new IOException("Error: PrivateStorage not available"));
File db = new File(dir, DB_NAME);
DBUtils.copyDatabase("/databases/", dir.getAbsolutePath(),
DB_NAME);
dbUrl = dbUrl + db.getAbsolutePath();
System.out.println(dbUrl);
c = DriverManager.getConnection(dbUrl);
} catch (IOException ex) {
Alert alert = new Alert(AlertType.CONFIRMATION, ex.getClass().getName());
alert.setContentText(ex.getMessage());
alert.showAndWait();
}
c.setAutoCommit(false);
System.out.println("Opened database successfully");
stmt = c.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM COMPANYn;");
while (rs.next()) {
ObservableList<String> items = FXCollections.observableArrayList();
String name1 = rs.getString("name");
// System.out.println(name1);
items.addAll(name1);
ET.getItems().addAll(items);
ET.getSelectionModel().select(0);
}
rs.close();
stmt.close();
c.close();
请有人可以帮助我。感谢您的帮助。
【问题讨论】:
-
您没有显示关闭 sql 语句、结果或连接的代码。你会关闭它们吗?
-
@JoséPereda 我更新了上面的代码。是的,我关闭它。还是说错了?
-
您为什么不关注 GluonSQLite 示例?正确使用 try-catch-finally。
-
感谢@JoséPereda 的回答。我尝试了一下,但我遇到了同样的错误