作業中のアプリケーションは、動的データではなく静的データを使用しています。したがって、この性質のために、書くのではなく、かなり効率的な方法でデータベースにデータを入力する関数を作成しようとしています
INSERT INTO table (id, name, description, category) VALUES ('1', 'ABC', 'XYZ', 'TRY');
機能は次のとおりです。
// Adding medicine entry
public void addMedicine(String brand, String description, String category) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_BRAND, med.getBrand());
values.put(KEY_CATEGORY, med.getCategory());
values.put(KEY_DESCRIPTION, med.getDescription());
db.insert(TABLE_MEDICINE, null, values);
db.close();
}
//populating the database
public void populateDB(){
this.addMedicine(new Medicines("ABC", "XYZ", "ABC"));
this.addMedicine(new Medicines("Mosard Tab", "Each Film coated tablet contains: Mosapride Citrate Dihydrate - 5mg JP eqv. To Mosapride citrate", "Posted under Tablets"));
}
そして最後に:
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String CREATE_MED_TABLE = "CREATE TABLE " + TABLE_MEDICINE + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_BRAND + " TEXT,"
+ KEY_DESCRIPTION + " TEXT," + KEY_CATEGORY + " TEXT )";
db.execSQL(CREATE_MED_TABLE);
populateDB();
}
しかし、これは私に次のエラーを与えています:
09-18 12:02:29.639: E/AndroidRuntime(13139): FATAL EXCEPTION: main
09-18 12:02:29.639: E/AndroidRuntime(13139): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.geneticalabs/com.geneticalabs.TrailDB}: java.lang.IllegalStateException: getDatabase called recursively
誰でも助けてもらえますか?または、自明ではない方法でデータベースにデータを入力する方法について、他の代替案を提案してください。
また、次の関数を使用してデータをアプリにフェッチしています。
//Getting all the medical entries
public List<Medicines> getAll(){
List<Medicines> medList = new ArrayList<Medicines>();
//Select all query
String query = "SELECT * FROM "+TABLE_MEDICINE;
SQLiteDatabase db = this.getWritableDatabase();
Cursor c = db.rawQuery(query, null);
if(c.moveToFirst()){
do{
Medicines med = new Medicines();
med.setID(Integer.parseInt(c.getString(0)));
med.setBrand(c.getString(1));
med.setDescription(c.getString(2));
med.setCategory(c.getString(3));
medList.add(med);
}while(c.moveToNext());
}
return medList;
}