SQLite-handleiding met voorbeeld in Android Studio | Android Database-handleiding in Android Studio: Store Your Data

SQLite Tutorial With Example In Android Studio

SQLite is een Structuur query basis database, open source, licht van gewicht, geen netwerk toegang en standalone database. Het ondersteunt ingebedde relationele databasefuncties.

SQLite Database Operations

SQLite Database Operations

Wanneer een toepassing een grote hoeveelheid gegevens moet opslaan, is het gebruik van sqlite te verkiezen boven andere opslagsystemen zoals SharedPreferences of het opslaan van gegevens in bestanden.

Android heeft een ingebouwde SQLite database implementatie. Het is lokaal beschikbaar op het apparaat (mobiele & tablet) en bevatten gegevens in tekstformaat. Het dragen licht gewicht gegevens en geschikt voor vele talen. Dus, het vereist geen administratie of setup procedure van de database.

Belangrijke opmerking – De gemaakte database wordt opgeslagen in een directory: data/data/APP_Name/databases/DATABASE_NAME.

Creëren en bijwerken van database in Android

Voor het creëren, bijwerken en andere operaties moet je een subklasse of SQLiteOpenHelper klasse te maken. SQLiteOpenHelper is een helper klasse om database creatie en versie beheer te beheren. Het biedt twee methods onCreate(SQLiteDatabase db), onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion).

De SQLiteOpenHelper is verantwoordelijk voor het openen van de database als die bestaat, het creëren van de database als die niet bestaat en het upgraden indien nodig. De SQLiteOpenHelper heeft alleen de DATABASE_NAME nodig om een database aan te maken. Na het uitbreiden van SQLiteOpenHelper moet u de methodes onCreate, onUpgrade en constructor implementeren.

onCreate(SQLiteDatabase sqLiteDatabase) methode wordt slechts eenmaal aangeroepen gedurende de gehele levenscyclus van de applicatie. Het zal worden aangeroepen wanneer er een eerste oproep is naar getReadableDatabase() of getWritableDatabase() functie beschikbaar in de super SQLiteOpenHelper klasse. Dus roept de SQLiteOpenHelper klasse de onCreate() methode op na het creëren van een database en het instantiëren van een SQLiteDatabase object. De databasenaam wordt doorgegeven in de constructoraanroep.

onUpgrade(SQLiteDatabase db,int oldVersion, int newVersion) wordt alleen aangeroepen wanneer er een update in de bestaande versie plaatsvindt. Dus om een versie te updaten moeten we de waarde van de versie variabele die in de superklasse constructor is doorgegeven verhogen.

In onUpgrade methode kunnen we queries schrijven om elke actie uit te voeren die nodig is. In de meeste voorbeelden zul je zien dat bestaande tabel(len) worden verwijderd en dat opnieuw de onCreate() methode wordt aangeroepen om opnieuw tabellen aan te maken. Maar het is niet verplicht om dit te doen en het hangt allemaal af van uw eisen.

We moeten de database versie veranderen als we een nieuwe rij in de database tabel hebben toegevoegd. Als we eisen hebben dat we geen bestaande gegevens in de tabel willen verliezen, dan kunnen we alter table query schrijven in de onUpgrade(SQLiteDatabase db,int oldVersion, int newVersion) methode.

Voor meer details lees: Invoegen, Lezen, Verwijderen & Update Operatie In SQLite

SQLite Voorbeeld In Android Studio

Geef een beter begrip van Sqlite Voordat Je Voorbeeld Leest – Om een beter begrip te krijgen van SQlite database, is het aan te raden om eerst onderstaand artikel te lezen:

  • Inleiding tot SQLite en installatie
  • Lijst van alle operatoren in SQLite
  • Datatatype en commando’s in SQLite
  • Lijst van alle clausules in SQLite voor het definiëren van specifieke condities
  • Insert, Lezen, Verwijderen &Bewerking bijwerken in SQLite

In dit voorbeeld willen we eenvoudig de invoeg, update, verwijder en meer bewerkingen van SQLite over een tabel in Android Studi illustreren. We hebben een activiteit gemaakt met een textview, knop en edittext. Een andere klasse die SQLiteOpenHelper uitbreidt waar de creatie en insert operaties zullen worden uitgevoerd. Het voorbeeld bevat een goede validatie, zoals je nodig hebt om gegevens in te voeren voor het uitvoeren van een bewerking.

Hieronder kunt u de code downloaden, de uiteindelijke uitvoer bekijken en stap voor stap uitleg krijgen:

Download code

SQlite Insertion Operation In Android Studio

SQlite Insertion Operation In Android Studio

Step 1: Maak een nieuw project en geef het de naam SQLiteOperations.

Stap 2: Open res -> layout -> activity_main.xml (of) main.xml en voeg de volgende code toe:

In deze stap maken we een lay-out in ons XML-bestand en voegen we tekstvak, knoppen en edittext toe. Op de knop onclick is gedefinieerd die het associëren met gerelateerde functie.

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.sqliteoperations.MainActivity" android:background="@android:color/holo_blue_dark"> <TextView android:text="@string/username" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginTop="12dp" android:id="@+id/textView" android:textSize="18sp" android:textStyle="bold|italic" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:gravity="center" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textPersonName" android:ems="10" android:id="@+id/editName" android:textStyle="bold|italic" android:layout_below="@+id/textView" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:hint="Enter Name" android:gravity="center_vertical|center" /> <TextView android:text="@string/password" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="13dp" android:id="@+id/textView2" android:textStyle="bold|italic" android:textSize="18sp" android:layout_below="@+id/editName" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:gravity="center" android:hint="Enter Password" /> <Button android:text="@string/view_data" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button2" android:textSize="18sp" android:onClick="viewdata" android:textStyle="bold|italic" android:layout_alignBaseline="@+id/button" android:layout_alignBottom="@+id/button" android:layout_alignRight="@+id/button4" android:layout_alignEnd="@+id/button4" /> <Button android:text="@string/add_user" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button" android:textStyle="bold|italic" android:textSize="18sp" android:onClick="addUser" android:layout_marginLeft="28dp" android:layout_marginStart="28dp" android:layout_below="@+id/editPass" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginTop="23dp" /> <Button android:text="@string/update" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button3" android:onClick="update" android:textStyle="normal|bold" android:layout_below="@+id/editText3" android:layout_alignLeft="@+id/button4" android:layout_alignStart="@+id/button4" android:layout_marginTop="13dp" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPersonName" android:ems="10" android:id="@+id/editText6" android:layout_alignTop="@+id/button4" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:freezesText="false" android:hint="Enter Name to Delete Data" android:layout_toLeftOf="@+id/button2" android:layout_toStartOf="@+id/button2" /> <Button android:text="@string/delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="21dp" android:layout_marginEnd="21dp" android:id="@+id/button4" android:onClick="delete" android:textStyle="normal|bold" tools:ignore="RelativeOverlap" android:layout_marginBottom="41dp" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPersonName" android:ems="10" android:layout_marginTop="47dp" android:id="@+id/editText3" android:textStyle="bold|italic" android:textSize="14sp" android:layout_below="@+id/button" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginLeft="7dp" android:layout_marginStart="7dp" android:hint="Current Name" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textPassword" android:ems="10" android:layout_marginTop="11dp" android:id="@+id/editPass" android:hint="Enter Password" android:gravity="center_vertical|center" android:textSize="18sp" android:layout_below="@+id/textView2" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:textAllCaps="false" android:textStyle="normal|bold" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPersonName" android:ems="10" android:id="@+id/editText5" android:textStyle="bold|italic" android:textSize="14sp" android:hint="New Name" android:layout_alignTop="@+id/button3" android:layout_alignLeft="@+id/editText3" android:layout_alignStart="@+id/editText3" android:layout_marginTop="32dp" /></RelativeLayout>

Stap 3 : Open nu app -> java -> package -> MainActivity.java en voeg de onderstaande code toe.

In deze stap hebben we de functies gebruikt die gekoppeld zijn via de knop klik. Deze functies zijn gedefinieerd in een andere klasse en worden hier gebruikt. Elke functie retourneer waarde die geen rijen bijgewerkt te definiëren, met behulp van die we gedefinieerd of operatie succesvol is of niet. Ook gebruiker nodig heeft om geldige gegevens te definiëren om bewerking uit te voeren lege velden zal niet worden onderhouden en fout terug te keren.

package com.example.sqliteoperations;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.EditText;public class MainActivity extends AppCompatActivity { EditText Name, Pass , updateold, updatenew, delete; myDbAdapter helper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Name= (EditText) findViewById(R.id.editName); Pass= (EditText) findViewById(R.id.editPass); updateold= (EditText) findViewById(R.id.editText3); updatenew= (EditText) findViewById(R.id.editText5); delete = (EditText) findViewById(R.id.editText6); helper = new myDbAdapter(this); } public void addUser(View view) { String t1 = Name.getText().toString(); String t2 = Pass.getText().toString(); if(t1.isEmpty() || t2.isEmpty()) { Message.message(getApplicationContext(),"Enter Both Name and Password"); } else { long id = helper.insertData(t1,t2); if(id<=0) { Message.message(getApplicationContext(),"Insertion Unsuccessful"); Name.setText(""); Pass.setText(""); } else { Message.message(getApplicationContext(),"Insertion Successful"); Name.setText(""); Pass.setText(""); } } } public void viewdata(View view) { String data = helper.getData(); Message.message(this,data); } public void update( View view) { String u1 = updateold.getText().toString(); String u2 = updatenew.getText().toString(); if(u1.isEmpty() || u2.isEmpty()) { Message.message(getApplicationContext(),"Enter Data"); } else { int a= helper.updateName( u1, u2); if(a<=0) { Message.message(getApplicationContext(),"Unsuccessful"); updateold.setText(""); updatenew.setText(""); } else { Message.message(getApplicationContext(),"Updated"); updateold.setText(""); updatenew.setText(""); } } } public void delete( View view) { String uname = delete.getText().toString(); if(uname.isEmpty()) { Message.message(getApplicationContext(),"Enter Data"); } else{ int a= helper.delete(uname); if(a<=0) { Message.message(getApplicationContext(),"Unsuccessful"); delete.setText(""); } else { Message.message(this, "DELETED"); delete.setText(""); } } }}

Step 4: In deze stap maken een java klasse myDbAdapter. java.

In deze definiëren we de functies die worden gebruikt om de bewerkingen invoegen, bijwerken en verwijderen operaties in SQLite uit te voeren. Verder deze klasse te creëren een andere klasse die de SQLiteOpenHelper zal uitbreiden. Elke functie bevat gelijkwaardige methoden voor het uitvoeren van bewerkingen.

Belangrijke opmerking – Volgens de naamgevingsconventie wordt aanbevolen om een primaire sleutel te definiëren die begint met een underscore, bijvoorbeeld: _id.

package com.example.sqliteoperations;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class myDbAdapter { myDbHelper myhelper; public myDbAdapter(Context context) { myhelper = new myDbHelper(context); } public long insertData(String name, String pass) { SQLiteDatabase dbb = myhelper.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put(myDbHelper.NAME, name); contentValues.put(myDbHelper.MyPASSWORD, pass); long id = dbb.insert(myDbHelper.TABLE_NAME, null , contentValues); return id; } public String getData() { SQLiteDatabase db = myhelper.getWritableDatabase(); String columns = {myDbHelper.UID,myDbHelper.NAME,myDbHelper.MyPASSWORD}; Cursor cursor =db.query(myDbHelper.TABLE_NAME,columns,null,null,null,null,null); StringBuffer buffer= new StringBuffer(); while (cursor.moveToNext()) { int cid =cursor.getInt(cursor.getColumnIndex(myDbHelper.UID)); String name =cursor.getString(cursor.getColumnIndex(myDbHelper.NAME)); String password =cursor.getString(cursor.getColumnIndex(myDbHelper.MyPASSWORD)); buffer.append(cid+ " " + name + " " + password +" \n"); } return buffer.toString(); } public int delete(String uname) { SQLiteDatabase db = myhelper.getWritableDatabase(); String whereArgs ={uname}; int count =db.delete(myDbHelper.TABLE_NAME ,myDbHelper.NAME+" = ?",whereArgs); return count; } public int updateName(String oldName , String newName) { SQLiteDatabase db = myhelper.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put(myDbHelper.NAME,newName); String whereArgs= {oldName}; int count =db.update(myDbHelper.TABLE_NAME,contentValues, myDbHelper.NAME+" = ?",whereArgs ); return count; } static class myDbHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "myDatabase"; // Database Name private static final String TABLE_NAME = "myTable"; // Table Name private static final int DATABASE_Version = 1;. // Database Version private static final String UID="_id"; // Column I (Primary Key) private static final String NAME = "Name"; //Column II private static final String MyPASSWORD= "Password"; // Column III private static final String CREATE_TABLE = "CREATE TABLE "+TABLE_NAME+ " ("+UID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+NAME+" VARCHAR(255) ,"+ MyPASSWORD+" VARCHAR(225));"; private static final String DROP_TABLE ="DROP TABLE IF EXISTS "+TABLE_NAME; private Context context; public myDbHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_Version); this.context=context; } public void onCreate(SQLiteDatabase db) { try { db.execSQL(CREATE_TABLE); } catch (Exception e) { Message.message(context,""+e); } } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { try { Message.message(context,"OnUpgrade"); db.execSQL(DROP_TABLE); onCreate(db); }catch (Exception e) { Message.message(context,""+e); } } }}

Step 5: Maak in deze stap nog een java class Message.class

In deze gewoon toast toevoegen voor het weergeven van bericht. Dit is optioneel, het wordt alleen toegevoegd aan opnieuw en opnieuw definiëren van toast in het voorbeeld.

package com.example.sqliteoperations;import android.content.Context;import android.widget.Toast;public class Message { public static void message(Context context, String message) { Toast.makeText(context, message, Toast.LENGTH_LONG).show(); }}

Output
Nu de app uitvoeren en de functionaliteit bekijken die over de knoppen is toegevoegd.
SQlite Updation And Deletion Operation In Android Studio

SQlite Updation And Deletion Operation In Android Studio

Add & Retrieve Image From SQLite Database:

Om te begrijpen hoe u een afbeelding kunt toevoegen of ophalen uit een externe opslagruimte van uw telefoon in een toepassing met behulp van een SQLite-database. Lees onze stap voor stap & afbeelding ophalen uit SQLite tutorial.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *