Деректер қорын құру. SQLite
Android платформасы деректердің қиын коллекциясын сақтауға мүмкіндік беретін функцияларымен қамтамасыз етеді. Android кестелер құрамын көруге, SQL командаларын орындауға және SQLite деректер қорында басқа да пайдалы функцияларды орындауға мүмкіндік беретін SQLite3 деректер қорын басқару құралдарымен бірге келеді.
SQLite және т.б деректер қорлары құрылғыда /data/data/package_name/ деректер базасында сақталады. SQLite барлық деректер қорын жалғыз стандартты файлда сақтайды. Android кітапханалары SQLite деректер қорларын құру, басқару, класстармен қамтамасыз етеді.
Android кітапханасында деректер қорын құруға арналған SQLiteOpenHelper классы бар. SQLiteOpenHelper классы екі абстрактілі әдістен тұрады:
· onCreate() – бірінші дерктер қорын құрғанда шақырылады;
· onUpgrade() – деректер қорын жаңарту (өзгерту) кезінде шақырылады.
Қосымшада SQLiteOpenHelper-дан туатын өз классы құрылады. Бұл класста құру логикасын және жаңартуларын белгілей отырып, жоғарыда айтылған әдістерді іске асыру керек.
Бұл класста қолданушылар деректер қорына сұраныс кезінде бағандарды анықтау үшін қолданатын, деректер қорында кестелер және алаңдар атауы үшін ашық жолдық тұрақтыларды жариялау қабылданған. Әр бағана деректер типін тыңғылықты түрде документациялау қажет, себебі, клиент үшін бұл ақпарат деректерге қатынау үшін керек болады. Мысалы, Contact кестесі үшін тұрақтыларды былай жариялауға болады:
Public static final String TABLE_NAME = “contact”;
Public static final String NAME “first_name”;
Public static final String PHONE ‘phone”;
SQLiteOpenHelper-мен кеңейтілетін класс _ID жолдық тұрақтысы анықталатын, идентификаторлар алаңы атауын көрсететін BaseColumns интерфейсі қамтылады. Деректер қорында құрылатын кестелерде _ID алаңы INTEGER PRIMARY KEY AUTOINCREMENT типті болуы керек. AUTOINCREMENT сипаттауышы міндетті емес.
OnCreate() кері шақыру әдісінде кестелер құру логикасын іске асырып, керек жағдайда оларды бастапқы деректермен толтыру керек, мысалы:
@Override
Public void onCreate (SQLiteDatabase db) {
db.execSQL (“CREATE TABLE + TABLE_NAME
+ (_id INTEGER PRIMARY KEY AUTOINCREMENT,
+ COL_NAME + TEXT, + COL_PHONE + TEXT);”);
}
onUpdate() әдісі бағдарлама кестесінің өзгертілген құрылымын жаңарту кезінде шақырылады. onUpdate() кері шақыру әдісінде, мысалы, деректер қорында кестені жою (DROP TABLE) туралы сұранысты іске асыруға болады. Одан кейін жаңартылған құрылымды кесте нұсқасын құру үшін қайта onCreate() әдісі шақырылады, мысалы:
@Override
Public void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion)
{
Db.execSQL(“DROP TABLE IF EXISTS +TABLE_NAME”);
onCreate (db);
Android кітапханасында SQLite деректер қорын басқару үшін SQliteDatabase калассы қолданылады. SQliteDatabase классында деректерді оқу, қосу, жою, өзгерту әдістері анықталған.
Деректерді оқу үшін query () әдісі қолданылады:
Cursor query (String table, String[] columns,
String selection, String[] selectionArgs,
String groupBy6 String having, String sortOrder)
Query() әдісіне жеті параметр беріледі:
- table – сұраныс жіберілетін кесте атауы;
- columns – қайтарылатын жолдардың атаулар тізімі. Null жіберілген кезде барлық бағандар қайтарылады;
- selection – were сөзін қалыптастыратын параметр. Null жіберілген кезде барлық жолдар қайтарылады;
- selectionArgs – фильтр аргументтері мәні;
- groupBy – GROUP BY сөзін қалыптастыратын параметр. GROUP BY керек емес жағдайда null жіберіледі;
- having - HAVING сөзін қалыптастыратын параметр. Керек емес жағдайда null жіберіледі;
- sortOrder – ORDER BY сөзін қалыптастыратын параметр. Үнсіз келісім бойынша сұрыптау кезінде null жіберіледі.
Қайтарылатын деректерді өңдеу үшін cursor объетісі деректердің барлық типтерін оқитын әдістер жинынан тұрады – getString(), getInt(), getFloat().
SQLite деректер қорында жаңа жазба енгізу үшін insert() әдісі қолданылады:
Long insert (Srting table, String nullColumnHack, ContentValues values)
Insert әдісіне үш параметр беруіміз тиіс:
· table – жазба енгізілетін кесте атауы;
· nullColumnHack – SQLite деректер қорында толығымен бос жол енгізуге тиым салынған, егер контент-провайдер клиентінен келген жол бос болса, онда, тек осы бағанға null мәні беріледі;
· values – контент-провайдер клиентімен берілетін кілт-мәні жұбын қамтитын көрсетілім картасы.
Insert() әдісі _ID идентификаторын қайтарады немесе қате болған жағдайда -1 мәнін береді.
Деректер қорында жазбаларды жаңарту және өзгерту үшін сәйкесінше update() және delete() әдістері қолданылады:
Int update (String table, ContentValues values,
String whereClause, String[] whereArgs)
Int delete (String table, String whereClause, Strin[] whereArgs)
Бұл әдістерде соңғы екі параметр қарастырылған query() әдісіне аналогті WHERE SQL-мәнін құрады. Бұл әдістер жаңартылған немесе жойылған жолдар санын қайтарады.
Жоғарыда айтылған әдістерден басқа бұл класста деректер қорын басқаруға арналған басқа тапсырмаларды орындайтын түрлі әдістер бар.
4 Android операциялық жүйесіне арналған «балаларға арналған сөйлейтін әліпби» қосымшасын жасау