Файл базы данных лежит /data/data/ru.ilnurgi1/databases/
android.database.sqlite.
SQLiteDatabase
beginTransaction
()Начинает транзакцияю
Блокирует базу для чтения и записи для других подключений
db.beginTransaction();
// some code
db.setTransactionSuccessful();
db.endTransaction();
db.beginTransaction();
try {
// some code
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
beginTransactionNonExclusive
()Начинает транзакцияю
Блокирует базу для записи для других подключений
db.beginTransactionNonExclusive();
delete
(String tableName, String selection, String[] selectionArgs)Удаляет записи из БД и возвращает количесвто удаленных записей
int countDelete = db.delete("myTable", null, null);
int countDelete = db.delete("myTable", "id="+id, null);
endTransaction
()Завершает транзакцияю
db.endTransaction();
getVersion
()Возвращает int, версия БД
int dbVersion = db.getVersion();
insert
(String tableName, null, ContentValues cv)Добавляет запись в БД и возвращает его уникальный идентификатор
ContentValues cv = new ContentValues();
cv.put("name", "name");
int createdRowId = db.insert("myTable", null, cv);
query
(String tableName, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)Возвращает курсор android.database.Cursor
выборка данных из БД
Cursor c = db.query("mytable", null, null, null, null, null, null);
Cursor c = db.query(
"mytable as mt join some table as st on ...",
null,
null,
null,
null,
null,
null);
if (c.moveToFirst()) {
int nameColIndex = c.getColumnIndex("name");
do {
String name = c.getString(nameColIndex)
} while (c.moveToNext());
}
// достаем записи по условию
Cursor cursor = db.query(
DB_NAME,
null,
COLUMN_ID + " = ?",
new String[] {String.valueOf(cashAccountId)},
null,
null,
null);
CashAccountModel cashAccount = null;
if (cursor.moveToFirst()) {
do {
if (cashAccount != null){
return null;
}
cashAccount = new CashAccountModel(
cursor.getString(cursor.getColumnIndex(COLUMN_NAME))
);
} while (cursor.moveToNext());
}
return cashAccount;
rawQuery
(String sqlQuery, String[] selectionArgs)Выполняет запрос на SQL, возвращает курсор android.database.Cursor
Cursor c = db.rawQuery("select ... where id = ?", new String[] {1});
setTransactionSuccessful
()Подтверждение успешности транзакции, для комита изменении
db.setTransactionSuccessful()
update
(String tableName, ContentValues cv, String selection, String[] selectionArgs)Обновляет записи в БД и возвращает количество обновленных записей
int ipdateCount = db.update("myTable", cv, "id=?", new String[] {id});
android.database.sqlite.
SQLiteOpenHelper
(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)android.database.sqlite.
SQLiteOpenHelperDBHelper
(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler)Вспомогательный класс, для реализации работы с БД.
class DBHelper extends SQLiteOpenHelper {}
DBHelper helper = new DBHelper();
close
()Закрывает подключение к БД
helper.close();
getReadableDatabase
()Подключается к бд и возвращает его android.database.sqlite.SQLiteDatabase
БД возвращается только для чтения
SQLiteDatabase db = helper.getReadableDatabase()
getWritableDatabase
()Подключается к бд и возвращает его android.database.sqlite.SQLiteDatabase
БД возвращается как для чтения так и для записи
Если нет свободного места на устройстве, то вызовет исключение
SQLiteDatabase db = helper.getWritableDatabase()
onCreate
(SqliteDatabase db)Обработчик создания БД, если его нет
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL();
}
onUpgrade
(SQLiteDatabase db, int oldVersion, int newVersion)Обработчик обновления БД, если версия изменилась
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL();
}