java を使用して mySQL データベースを作成しましたが、「getData()」メソッドにある「Cursor c」変数のインスタンスをクラスに 1 つだけ持たせることを試みています。これは、getData()
メソッドが呼び出されるたびに、カーソルがデータベースを最初から読み取るのではなく、中断したところから読み取りを続行できるようにするためです。
メソッドから「Cursor c」を取り出して静的にしようとしましたが、他の問題が発生します。
適切に行う方法を教えていただけますか?
public class SQLClass {
public static final String KEY_ROWID = "_id";
public static final String KEY_NAME = "IncomeName";
public static final String KEY_AMOUNT = "IncomeAmount";
private static String DATABASE_NAME = "MoneyTracker";
private static String DATABASE_TABLE = "IncomeTable";
private static int DATABASE_VERSION = 1;
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
}//end DbHelper constructor
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("CREATE TABLE " + DATABASE_TABLE + "(" + KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ KEY_NAME + " TEXT NOT NULL, " + KEY_AMOUNT + " TEXT NOT NULL);");
}//end onCreate method
@Override
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
// TODO Auto-generated method stub
db.execSQL("DROP IF EXISTS " + DATABASE_NAME);
onCreate(db);
}//end onUpgrade method
}//end class DbHelper
public SQLClass (Context c){
ourContext = c;
}//end constructor SQLClass
public SQLClass open()throws SQLException{
ourHelper = new DbHelper(ourContext);
ourDatabase = ourHelper.getWritableDatabase();
return this;
}//end method open
public void close(){
ourHelper.close();
}//end method close
public long createEntry(String name, String amount) {
// TODO Auto-generated method stub
ContentValues cv = new ContentValues();
cv.put(KEY_NAME, name);
cv.put(KEY_AMOUNT, amount);
return ourDatabase.insert(DATABASE_TABLE, null, cv);
}
public String[] getData() {
// TODO Auto-generated method stub
String[] columns = new String[]{KEY_ROWID, KEY_NAME, KEY_AMOUNT};
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
String[] result = new String[]{"","",""};
int iRow = c.getColumnIndex(KEY_ROWID);
int iName = c.getColumnIndex(KEY_NAME);
int iAmount = c.getColumnIndex(KEY_AMOUNT);
c.moveToNext();
result[0] = c.getString(iRow);
result[1] = c.getString(iName);
result[2] = c.getString(iAmount);
return result;
}//end method getData
}//end class SQLClass