我試圖在AsyncTask中使用SQLite數據庫,但我不知道如何在這個類中初始化它。任何人都可以幫助我嗎?如果有人有任何建議,我會很感激。在AsyncTask中使用SQLite
public class ReadRssBackground extends AsyncTask<Context, Void, Void> {
DatabaseHelper myDB;
@Override
protected Void doInBackground(Context... contexts) {
myDB = new DatabaseHelper(context); // <--- how to do it right?
checkXML(GetData());
return null;
}
public void checkXML(Document data) {
//here i try do read or write a new item in the DB
myDB.insertData("2", "Tittel", "www.link.de","Stuff");
}
public Document GetData() {
//here i get the document from a url
}
}
這裏是我的DatabaseHelper.class:
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "title.db";
public static final String TABLE_NAME = "feed_table";
public static final String COL_1 = "ID";
public static final String COL_2 = "TITLE";
public static final String COL_3 = "LINK";
public static final String COL_4 = "CATEGORY";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.e
xecSQL("create table " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT,TITLE TEXT,LINK TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
public boolean insertData(String id,String title, String link, String category){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_1,id);
contentValues.put(COL_2,title);
contentValues.put(COL_3,link);
contentValues.put(COL_4,category);
long result = db.insert(TABLE_NAME,null,contentValues);
if(result==(-1))
return false;
else
return true;
}
public Integer deleteData(String id) {
SQLiteDatabase db = this.getWritableDatabase();
return db.delete(TABLE_NAME, "ID = ?", new String[]{id});
}
}
非常感謝!現在它工作正常! – Koss