Деректер орын ру. 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 операциялы жйесіне арналан «балалара арналан сйлейтін ліпби» осымшасын жасау