【发布时间】:2023-04-08 11:42:01
【问题描述】:
我在我的应用程序中使用包含多个表的数据库。我有一个 XML 解析器,它需要在解析时将数据写入两个表。我为这两个表创建了两个数据库适配器,但现在我遇到了问题。当我使用一张桌子时,这很容易:
FirstDBAdapter firstTable = new FirstDBAdapter(mycontext);
firstTable.open(); // open and close it every time I need to insert something
// may be hundreds of times while parsing
// it opens not a table but whole DB
firstTable.insertItem(Item);
firstTable.close();
由于它是一个 SAX 解析器,在我看来(也许我错了),这会更好:
FirstDBAdapter firstTable = new FirstDBAdapter(mycontext);
@Override
public void startDocument() throws SAXException
{
firstTable.open(); // open and close only once
}
...
firstTable.insertItem(Item);
...
@Override
public void endDocument() throws SAXException
{
firstTable.close();
}
但是如果我需要向第二个表中插入数据,我该怎么做呢?例如,如果我有第二个适配器,我认为这不是一个好主意:
FirstDBAdapter firstTable = new FirstDBAdapter(mycontext);
SecondDBAdapter secondTable = new SecondDBAdapter(mycontext);
@Override
public void startDocument() throws SAXException
{
firstTable.open();
secondTable.open();
}
关于如何实现这一点的任何想法?
【问题讨论】:
-
既然你已经有了代码,那就试试吧。我总是以全局方式保存数据库对象引用,只有在超出范围时才重新打开它。
-
我会试一试,但我担心我可能把整个概念弄错了,我应该以某种完全不同的方式来做
-
每次读写操作后无需关闭数据库连接。另外,为什么不能在一个适配器中同时拥有两张表?或者,就像我被打败的那样,有一个共享的数据库对象?
标签: android database android-sqlite