目前我有点困惑。我收到一个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对象。我如何将这些结合在一起?
谢谢,A。
发布于 2011-03-12 01:19:58
你能通过构造函数把db对象传递给解析器吗?
public HandlerXmlData(SQLiteDatabase db){
this.db = db;
}发布于 2011-03-12 01:18:33
你有几个选择来实现你想要做的事情。
https://stackoverflow.com/questions/5275558
复制相似问题