Sissejuhatus Android SQLite'i andmebaasi

Blogi tutvustab Androidi SQLite'i andmebaasi



Sissejuhatus Android SQLite'i andmebaasi

Androidi SQLite andmebaas nõuab väga vähe mälu (umbes 250 kb), mis on saadaval kõigis android-seadmetes. Igal seadmel on sisseehitatud tugi SQLite andmebaasile, mida Android-seadmes hallatakse automaatselt alates selle loomisest, käivitamisest kuni päringu koostamiseni.



SQLite on avatud lähtekoodiga andmebaas, mis on saadaval igas androidi andmebaasis. See toetab standardsete suhete andmebaasi funktsioone, nagu SQL-i süntaks, tehingud ja SQL-laused. SQLite on märkimisväärselt SQL-i andmebaasi kergem versioon, kus enamik SQL-i käske ei tööta SQLite-andmebaasis. Kui SQLite on paigas, on oluline tagada, et funktsioon või käsk on SQLite'is saadaval ainult siis, kui seda saab käivitada.

SQLite peamised eelised:



  • See on kerge andmebaas
  • Nõuab väga vähe mälu
  • Automaatselt hallatav andmebaas

SQLite toetab ainult kolme andmetüüpi:

  • Tekst (nagu string) - andmetüüpide salvestamiseks
  • Täisarv (nagu int) - täisarvu esmase võtme salvestamiseks
  • Reaalne (nagu topelt) - pikkade väärtuste salvestamiseks

Põhimõtteliselt ei kinnita SQLite ise andmetüüpe. Teisisõnu, olenemata andmetüüpidest, nimetatakse neid kehtivateks.

Näiteks on antud juhul arutatud kaablioperaatori andmebaasi. Siin lisatakse uus tabel, kus tekstivälja tähistab tekst ja tekstivälja kandev väljanimi. Loodud on juhusliku väärtuse andmetüüp. Lõpptulemuseks on vale andmetüübiga testitabel, mis näitab, et SQLite ei kinnita andmetüüpi.



string konstantne bassein javas

* Andmebaasi leiate, kui klõpsate pakendil ja avate andmekausta andmebaasi kausta, mis sisaldab faili.

Märkus: SQLiteOpen Helper klassi kasutatakse andmebaasi loomise ja versioonihalduse haldamiseks.

Kasutaja küsimused:

Kas db versiooni tulemuse muutus on objekti SQLite versiooni muutmine?

Objekti SQLite versioon ei muutu pärast seda, kui üks käsitleb andmebaasi loomist / värskendamist ja teine ​​mängib andmebaasi tabelites hoitavatel andmetel. Seetõttu puudub sõltuvus üldse

Tulles tagasi, kui SQLiteopenHelper klassi laiendame, kirjutame selle klassi Oncreate & OnUpgrade meetodid üle. SQLite andmebaasile juurdepääsu korral võib see sõltuvalt päringu keerukusest olla aeglane. Alati eelistatakse veenduda, et SQL-päringu käivitamisel välditakse rekursioonis töötavate väikseimat mõju või päringuid. Samuti onsoovitatav teha andmebaasi sünkroonselt.Neid meetodeid haldab või kutsub raamistik automaatselt välja. Samuti tuleb märkida, et iga kord, kui keegi suurendab DB versiooni, kutsub see automaatselt sisse onUpgrade.

Alati, kui räägitakse SQLite avatud abiklassist, edastatakse selle andmebaasi nimi ja versioon laiendatud klassi konstruktoris.

Siin tuleb arvesse võtta kahte asja:

  • Kui andmebaasi pole, nimetatakse meetodit OnCreate ().
  • OnUpgrade () meetodit kutsutakse, kui andmebaasi versiooni värskendatakse.

SQLite avatud abistaja klass annab konstruktoris nime ja versiooni. Helistatakse getwriteabledatabase () ja kui andmebaasi pole, siis on see OnCreate. Sel juhul on andmebaas olemas ja versiooni uuendatud, kutsub see OnUpgrade ().

Kas need meetodid on db esimesel kutsumisel?

Võtame näite. Kui oleme rakenduse installinud, loob see OnCreate'i ja meetodi apk laaditakse Google Play poodi üles. Kui APK uusim versioon on alla laaditud, kontrollib see juba installitud andmebaasi. Kui sellel on kõrgem versioon, kutsub see täiendamist, kui mitte, siis ei tee see midagi.

Kasutaja küsimus

Kas db-versiooni täiendamiseks peab olema kasutaja luba?

Ei, luba pole vaja, kuna töötame rakenduse ressursside kallal, meil pole vaja luba küsida.

algoritmid ja andmestruktuurid javas

Kasutaja küsimus

Kui user1 on installinud minu rakenduse ja see on DB täiendatud versioon ning seejärel installib user2 uut rakendust ja user1 täiendab rakendust. Kas sellise stsenaariumi korral, kui kutsutakse versiooni täiendamisel kasutajat1 ja kutsutakse kasutaja2 loomismeetodit, on kõik meetodid androidist pärit?

Jah, kuna meil pole seadmesse ühtegi versiooni juba installitud. See pole oluline, kui seadmesse pole installitud varasemat versiooni. See sarnaneb väga raamistiku käitlemisega.

Kasutaja küsimus

Kas meil võib olla SQLite andmebaasi objekt? Mis siis, kui minu db-nimel onkonfliktteise db nimeobjektiga?

ülekoormus vs ülekaalukas java

See pole oluline, sest andmebaas asub rakenduse paketi nimel, mis ei tohiks olla vastuoluline isegi siis, kui on loodud samanimeline alamkaust. See loeb ainult juuretasandil ja juurtaseme haldamine toimub paketi nime abil. Tuleb märkida, et meil ei saa olla kahte sama paketinimega rakendust, kuid erinevate pakettide all võib olla 2 erinevat db nime. SQLite andmebaas hoolitseb objekti abil ajakohastamise, kustutamise, sisestamise, päringute esitamise ning andmebaasi toimingute sulgemise ja avamise eest.

Kas teil on meile küsimus? Mainige neid kommentaaride jaotises ja võtame teiega ühendust.

Seonduvad postitused: