【发布时间】:2014-07-07 11:36:34
【问题描述】:
我正在开发一个安卓应用程序。在那个应用程序中,我必须不断地从我的数据库中添加和获取数据。
我使用三个单独的线程来执行此操作。我不认为我有线程问题,因为在我的 DDMS 中我可以监控线程打开但我认为,我无法掌握的是数据库实例。
例如,
我有一种方法可以构造一个文件名,该文件名由一个表的单元格中的值+“_”+另一个表中的单元格的值组成。所以,我有这个方法,它调用另外两个方法,每个方法的任务是去数据库并获取那个值。
问题是我不确定我应该如何创建一个实例。下面您可以看到,对于每个方法,我都创建了同一个数据库的一个单独实例,然后关闭它。 在这个 AsyncTaskRunner 类中,我有许多与下面相同的方法,它们正在执行自己的任务,但每次都为同一个数据库打开不同的实例名称。
这似乎很错误。我想一旦类打开,我可以打开一个数据库的单个实例,然后直到 Destroy() 才关闭它,这样所有方法都可以做他们的事情。
我能做的更好吗?
这是我的代码:
public String evaluateATable(String filenamePrefix){
SQLDatabase getATableData = new SQLDatabase(mContext);
getATableData.open();
String aRowId = SQLDatabase.evalATable(filenamePrefix);
getATableData.close();
if(aRowId != null){
return aRowId;
}
return null;
}
public String evaluateLTable(String filenamePrefix){
SQLDatabase getLtabledata = new SQLDatabase(mContext);
getLtabledata.open();
String lRowId = SQLDatabase.evalLTable(filenamePrefix);
getLtabledata.close();
if(lRowId != null){
return lRowId;
}
return null;
}
【问题讨论】:
-
看起来答案可能是创建此数据库的全局实例?从我的发现看来,我可以打开数据库,然后修改我的所有方法并删除所有新实例和 opn、关闭 ops 以及对数据库执行的操作?
标签: android sqlite instance multiple-instances