данных и перемещение по ним Cursor cursor = db.query(TABLE_NAME, columns, where, whereArgs, null, null, null); if (cursor.moveToFirst()) { do { int data = cursor.getInt(cursor.getColumnInde(DataTable.INT_VALUE)); ... } while (cursor.moveToNext()); }
DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { //создание БД db.execSQL(CREATE_TABLE_STATEMENT); ... } @Override public void onUpgrade(SQLiteDatabase db, int ov, int nv){ //обновление БД до новой версии } }
... SQLiteDatabase db = databaseHelper.getReadableDatabase(); //чтение db.close(); ... SQLiteDatabase db = databaseHelper.getWritableDatabase(); //запись db.close(); • SQLiteOpenHelper позаботится обо всем, нужно только указать в каком режиме открыть БД
классе, например, DataTables public class DataTables { public static final class Persons implements BaseColumns { //cтруктура таблицы public static final String DEFAULT_SORT_ORDER = "name DESC"; public static final String NAME = "name"; public static final String AGE = "age"; //вспомогательный метод public static ContentValues makeContentValues(Person p){ ContentValues contentValues = new ContentValues(); contentValues.put(NAME, p.name); contentValues.put(AGE, p.age); return contentValues; } } //другие таблицы ... }
с разными возможностями • Используйте SQLiteOpenHelper • В большинстве случаев БД создается во внутренней файловой системе • В этом случае права на чтение БД имеет только приложение-владелец
получение данных • insert - добавление данных • update - обновление данных • delete - удаление данных • getType - получение типа данных • openFile - открытие файла • Во всех методах присутствует параметр Uri, идентификатор ресурса в провайдере
необходимые URI • Общий вид URI: content://com.<CompanyName>.provider.<ApplicationName>/<DataPath> • Связь с authorities провайдера в манифесте android:authorities = “com.<CompanyName>.provider.<ApplicationName>” • Доступ к набору: content://com.<CompanyName>.provider.<ApplicationName>/<Set> • Доступ к элементу: content://com.<CompanyName>.provider.<ApplicationName>/<Set>/<Element>
работы с провайдером • ContentResolver позволяет выполнить операции query, insert, update, delete для указанных Uri ContentResolver cr = Context.getContentResolver(); Cursor allRows = cr.query(contentUri, null, null, null, null); Cursor someRows = cr.query(contentUri, null, where, null, null); • ContentResolver обеспечивает связь между клиентом и провайдером, связанным с данным Uri