アンドロイドでSQLiteデータベースの内容を表示しようとしています。このコードは、db2.selectに条件を追加しない場合に機能します。ただし、クエリに条件を追加すると、「データベースでcloseが呼び出されませんでした」というエラーのフラグが立てられます。
これに対する解決策は何ですか?
前もって感謝します。
これが私のコードです:
public class LogDisp extends Activity {
final ResultLog resultlog = new ResultLog(this);
String[] FROM = {_ID,Type,Date,Question,Percent,Avg };
String testtype="Verbal:: Sentence Correction" ;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//String sqlstr="SELECT Date, Question, Avg, Percent FROM TABLE_NAME2 where Question>5";
String Orderby= Question+"DESC";
SQLiteDatabase db2 = resultlog.getReadableDatabase();
Cursor cursor = db2.query(TABLE_NAME2,FROM,null, null, null, null, Orderby);
//Cursor cursor =db2.rawQuery(sqlstr, null);
ScrollView sv = new ScrollView(this);
LinearLayout ll= new LinearLayout(this);
sv.addView(ll);
final TableLayout tv = new TableLayout(this);
ll.addView(tv);
while(cursor.moveToNext()){
String type=cursor.getString(1) ;
String date=cursor.getString(2);
String question=cursor.getString(3);
String percent=cursor.getString(4);
String avg=cursor.getString(5);
TableRow tr= new TableRow(this);
tv.addView(tr);
final String space=""+""+""+""+""+"";
TextView txtview= new TextView(this);
txtview.setText(date+space+question+space+percent+space+avg);
tr.addView(txtview);
}
this.setContentView(sv);
db2.close();
cursor.close();
}
}
そして、これが私のSQLiteヘルパークラスです:
public class ResultLog extends SQLiteOpenHelper{
private static final String DATABASE_NAME2 = "LogofResult.db";
private static final int DATABASE_VERSION2 = 1;
public ResultLog(Context ctx) {
super(ctx, DATABASE_NAME2, null, DATABASE_VERSION2);
}
// Database creation sql statement
private static final String DATABASE_CREATE = "create table "
+ TABLE_NAME2+ "(" +
_ID + " integer primary key autoincrement, " +
Type +" text not null,"+
Date + " integer not null,"+
Question + " integer not null,"+
Avg+" real not null,"+
Percent +" real not null);" ;
@Override
public void onCreate(SQLiteDatabase database) {
database.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME2);
onCreate(db);
}
}