此刻我有点困惑。我收到一个 XML 文件并希望将该内容存储在 sqlite db 中。我猜听起来很常见。我有一个 DBAdapter,它基本上执行以下操作
private static class DatabaseHelper extends SQLiteOpenHelper
{
private final Context ctx;
DatabaseHelper(Context context)
{
super(context, Constants.DB_NAME, null, Constants.DB_VERSION);
this.ctx = context;
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL("create table mytable (_id integer primary key autoincrement, field text not null, field2 text not null );");
fillDb(db);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
//not relevant here so skip it
}
private void fillDb(SQLiteDatabase db)
{
InputStream rawInput = this.ctx.getResources().openRawResource(R.raw.data);
SAXParserFactory factory = SAXParserFactory.newInstance();
try
{
SAXParser saxParser = factory.newSAXParser();
saxParser.parse(rawInput, new HandlerXmlData());
}
catch(Exception e)
{
//not relevant here so skip it
}
//this manual entries would work here
//ContentValues values = new ContentValues();
//values.put("field", "aaa");
//values.put("field2", "bbb");
//db.insert("mytable", null, values);
}
现在的问题是在我的 SAXParser
公共类 HandlerXmlData 扩展 DefaultHandler {
private String currentValue = "";
public void startDocument()
{
}
public void startElement(String namespaceURI, String localName, String qName, Attributes atts)
{
}
public void characters(char[] ch, int start, int length)
{
currentValue = new String(ch, start, length);
//here I get the value from my XML
//so I need something like db.insert(...)
}
public void endElement(String uri, String localName, String qName)
{
}
因此,在我的 SAXParser 中,我无法访问我在 DatabaseHelper 类中拥有的 db 对象。我如何把这些放在一起?
谢谢。