내 안드로이드 응용 프로그램에서 sqlite 데이터베이스를 사용하지만 SQLite에서 데이터를 읽는 쿼리를 사용할 때 오류가 발생합니다. 이 테이블을 만드는 내 코드입니다. 내 SQLite는 DB에서 데이터를 읽기 위해이 방법을 사용하고, 그것은 나에게 "없습니다에 다시 개방 이미 닫힌 객체를"오류를 제공 이제 "닫힌 개체를 다시 열 수 없습니다"sqlite android에서 데이터를 읽을 때
package com.example.mydb;
public class Dbadapter {
private static final String DATABASE_NAME = "mydb";
private static final int DATABASE_VERSION = 5;
private static final String DATABASE_TABLE18 = "modalation_medicine_table";
private static final String MOD_ID = "modalation_previousss_id";
private static final String MOD_MED_ID = "modalation_medicine_id";
private static final String MOD_MEDICINE = "modalation_medicine";
private static final String CREATE_DATABASE_TABLE18 = "CREATE TABLE IF NOT EXISTS "
+ DATABASE_TABLE18
+ " ("
+ MOD_MED_ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ MOD_MEDICINE
+ " text, "
+ MOD_ID
+ " integer, "
+ " FOREIGN KEY ("
+ MOD_ID
+ ") REFERENCES "
+ DATABASE_TABLE5
+ " ("
+ MODALATION_KEY_ID
+ "));";
private DbHelper ourHelper;
private final Context ourContext;
private SQLiteDatabase ourDatabase;
private static class DbHelper extends SQLiteOpenHelper {
public DbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_DATABASE_TABLE18);
ContentValues modalation_medicine = new ContentValues();
modalation_medicine.put(MOD_MEDICINE, "Natrum Muriaticum");
modalation_medicine.put(MOD_ID, 1);
db.insert(DATABASE_TABLE18, null, modalation_medicine);
modalation_medicine.put(MOD_MEDICINE, "Calcarea Carbonica");
modalation_medicine.put(MOD_ID, 1);
db.insert(DATABASE_TABLE18, null, modalation_medicine);
modalation_medicine.put(MOD_MEDICINE, "Phosphorus");
modalation_medicine.put(MOD_ID, 1);
db.insert(DATABASE_TABLE18, null, modalation_medicine);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXIST " + DATABASE_TABLE18);
}
}
public Dbadapter(Context c) {
ourContext = c;
}
public Dbadapter open() throws SQLException{
ourHelper = new DbHelper(ourContext);
ourDatabase = ourHelper.getWritableDatabase();
return this;
}
public void close() {
ourHelper.close();
}
.
public boolean mod_app_symps(String l, String modfinalMed) {
String[] modalation = new String[] { MOD_ID, MOD_MEDICINE };
Cursor c24;
boolean iscontain = false;
c24 = ourDatabase.query(DATABASE_TABLE18, modalation, "modalation_previousss_id = ? AND modalation_medicine = ?",new String[] { l , modfinalMed } , null, null, null);
if(c24.getCount() > 0) {
iscontain = true;
}
return iscontain;
}
Google을 통해 문제를 해결하려했지만 도움이되지 않았습니다. P .: SQLite db에서 데이터를 읽는 것과 같은 작업을 수행하는 여러 가지 방법이 있습니다. 모두 잘 작동합니다. 이 오류에서만 오류가 발생합니다.
편집 :이 방법은 때문에 코드 줄의 발생
public String[] getmodMed(long l) {
String[] modalation_med = new String[] { MOD_ID, MOD_MEDICINE};
Cursor c19 = ourDatabase.query(DATABASE_TABLE18, modalation_med, MOD_ID + "='" + l + "'" , null, null, null, null);
String mod_medicine[]= new String[c19.getCount()];
int imodmedicine = c19.getColumnIndex(MOD_MEDICINE);
if(c19 != null){
c19.moveToFirst();
while(!c19.isAfterLast()) {
for(int i =0; i< c19.getCount(); i++) {
mod_medicine[i]= c19.getString(imodmedicine);
c19.moveToNext();
} }
}
return mod_medicine;
}
을 "DB"에 대한 쿼리를 실행의 SQLiteDatabase dB = ourHelper.getWriteableDatabase 당신이 쿼리 직전를 추가하십시오. 권리? – Yamna
이 메서드로 데이터베이스를 닫은 다음 다른 메서드를 사용하여 데이터베이스에 액세스하려고하면 문제가 발생합니다. ourHelper.close()에 대한 의견을 보내주십시오. 그리고 무슨 일이 일어나는가 보자. – SteBra
내가 확인하자. – Yamna