Новое в использовании баз данных, поэтому не уверен, где моя ошибка лежит честно. Вот мой код:SQL DB поддерживает только одну строку?
Создание базы данных
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);
}
Создание строки
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);
}
Получение курсора ко всем строкам в таблице
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);
}
Использование курсора для входа некоторых атрибуты всех строк
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) тип подхода –