データベースを使い慣れていないので、私のエラーが正直であるところがどこにあるのか分かりません。SQL DBは1つの行しか保持しませんか?
のいくつかをログに記録するカーソルを使用し
public Cursor fetchAllJobs() {
return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_COMPANY,
KEY_ADVERTISED, KEY_STATUS, KEY_POSITION, KEY_WAGE, KEY_HOURS,
KEY_ADDRESS, KEY_EMAIL, KEY_NUMBER, KEY_NOTES}, null,
null, null, null, null);
}
テーブル内のすべての行にカーソルを取得する行
public long createJob(String company, String advertised, String status, String position, String wage, String hours,
String address, String email, String number, String notes) {
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_COMPANY, company);
initialValues.put(KEY_ADVERTISED, advertised);
initialValues.put(KEY_STATUS, status);
initialValues.put(KEY_POSITION, position);
initialValues.put(KEY_WAGE, wage);
initialValues.put(KEY_HOURS, hours);
initialValues.put(KEY_ADDRESS, address);
initialValues.put(KEY_EMAIL, email);
initialValues.put(KEY_NUMBER, number);
initialValues.put(KEY_NOTES, notes);
return mDb.insert(DATABASE_TABLE, null, initialValues);
}
を作成するデータベース
private static final String DATABASE_CREATE =
"create table job_details (_id integer primary key autoincrement, "
+ "company text not null, advertised text, status text not null, position text not null, " +
"wage text, hours text, address text, " +
"email text, number text, notes text);";
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL(DATABASE_CREATE);
}
の作成:ここに私のコードですすべての行の属性
private void getAllData(){
Cursor c = mDbHelper.fetchAllJobs();
startManagingCursor(c);
do{
if(c.moveToFirst()){
String company;
String position;
String number;
int companyColumn = c.getColumnIndex(JobsDbAdapter.KEY_COMPANY);
int positionColumn = c.getColumnIndex(JobsDbAdapter.KEY_POSITION);
int numberColumn = c.getColumnIndex(JobsDbAdapter.KEY_NUMBER);
do{
company = c.getString(companyColumn);
position = c.getString(positionColumn);
number = c.getString(numberColumn);
}while(c.moveToNext());
Log.d(TAG, "Company is = "+company);
Log.d(TAG, "Position is = "+position);
Log.d(TAG, "Number is = "+number);
}
}while(c.moveToNext());
}
このコードを使用すると、出力/ログに記録された値は、データベースに入力しようとした最後の行に含まれている値だけになります。私は間違ったデータを入力しているのか、間違ったデータベースを探しているのか分かりません。
SQLが混乱する場合は、Active Record(http://martinfowler.com/eaaCatalog/activeRecord.html)またはData Mapper(http://martinfowler.com/eaaCatalog/dataMapper.html)でDBアクセスをカプセル化することを検討してください)タイプのアプローチ –