SQLite Tutorial Com Exemplo No Android Studio | Android Database Tutorial No Android Studio: Armazene os seus dados

SQLite Tutorial Com Exemplo No Estúdio Android

SQLite é uma base de dados base de consulta de estrutura, fonte aberta, peso leve, sem acesso à rede e base de dados autónoma. Suporta características de bases de dados relacionais incorporadas.

SQLite Database Operations

SQLite Database Operations

Quando uma aplicação precisa de armazenar uma grande quantidade de dados, então o uso de sqlite é mais preferível do que outro sistema de repositório como SharedPreferences ou guardar dados em ficheiros.

Android foi incorporado na implementação da base de dados SQLite. Está disponível localmente através do dispositivo(mobile & tablet) e contém dados em formato de texto. Transporta dados leves e adequados com muitas línguas. Portanto, não requer qualquer administração ou procedimento de configuração da base de dados.

Nota Importante – A base de dados criada é guardada num directório: data/data/APP_Name/databases/DATABASE_NAME.

Criar e Actualizar Base de Dados no Android

Para criar, actualizar e outras operações é necessário criar uma subclasse ou classe SQLiteOpenHelper. SQLiteOpenHelper é uma classe de ajuda para gerir a criação de bases de dados e a gestão de versões. Fornece dois métodos onCreate(SQLiteDatabase db), onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion).

O SQLiteOpenHelper é responsável pela abertura de base de dados se existir, pela criação de base de dados se esta não existir e pela actualização, se necessário. A SQLiteOpenHelper apenas requer a DATABASE_NAME para criar a base de dados. Depois de estender a SQLiteOpenHelper, será necessário implementar os seus métodos onCreate, onUpgrade e constructor.

onCreate(SQLiteDatabase sqLiteDatabase) método é chamado apenas uma vez ao longo de todo o ciclo de vida da aplicação. Será chamado sempre que houver uma primeira chamada para a função getReadableDatabase() ou getWritableDatabase() disponível na classe super SQLiteOpenHelper. Assim, a classe SQLiteOpenHelper chama o método onCreate() após criar uma base de dados e instanciar um objecto SQLiteDatabase. O nome da base de dados é passado em constructor call.

onUpgrade(SQLiteDatabase db,int oldVersion, int newVersion) só é chamado quando há uma updation na versão existente. Assim, para actualizar uma versão, temos de aumentar o valor da variável de versão passada no construtor de superclasse.

No método onUpgrade podemos escrever consultas para executar qualquer acção que seja necessária. Na maioria dos exemplos, verá que a(s) tabela(s) existente(s) está(ão) a ser descartada(s) e novamente o método onCreate() está a ser chamado para criar tabelas novamente. Mas não é obrigatório fazê-lo e tudo depende dos seus requisitos.

Temos de alterar a versão da base de dados se tivermos adicionado uma nova linha na tabela da base de dados. Se tivermos requisitos de que não queremos perder dados existentes na tabela, então podemos escrever a consulta de alteração da tabela no método onUpgrade(SQLiteDatabase db,int oldVersion, int newVersion).

Para mais detalhes leia: Insert, Read, Delete & Update Operation In SQLite

SQLite Example In Android Studio

Get Get Better Understanding of Sqlite Before You Read Example – Para obter uma melhor compreensão da base de dados SQlite, recomenda-se que leia primeiro o artigo abaixo:

  • Introdução a SQLite e Instalação
  • Lista de todos os operadores em SQLite
  • Tipo de dados e comandos em SQLite
  • Lista de todas as cláusulas em SQLite para definição de condição específica
  • li>Inserir, Ler, Apagar & Actualizar operação em SQLite

Neste exemplo queremos simplesmente ilustrar a inserção, actualização, apagar e mais operações de SQLite sobre uma tabela no Android Studi. Criámos uma actividade com visualização de texto, botão e edição de texto sobre a mesma. Outra classe que estende SQLiteOpenHelper onde serão realizadas as operações de criação e inserção. O exemplo contém validação adequada como se fosse necessário introduzir dados antes de executar qualquer operação.

Below pode descarregar código, ver saída final e explicação passo a passo:

Download Code

Operação de inserção de SQlite no Estúdio Android

Operação de inserção de SQlite no Estúdio Android

Passo 1: Criar um Novo Projecto e Nomeá-lo SQLiteOperations.

P>Passo 2: Abrir res -> layout -> activity_main.xml (ou) main.xml e adicionar o seguinte código:

Neste passo criamos um layout no nosso ficheiro XML adicionando caixa de texto, botões, edittext. No botão onclick é definido que o associa com função relacionada.

<?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>

Passo 3 : Agora abrir app -> java -> pacote -> MainActivity.java e adicionar o código abaixo.

Neste passo utilizámos as funções que se ligavam através do botão click. Estas funções são definidas noutra classe e são utilizadas aqui. Cada valor de retorno de função que não define nenhuma das linhas actualizadas, usando que definimos se a operação é bem sucedida ou não. Também o utilizador precisa de definir dados válidos para executar a operação campos vazios não serão entretidos e o erro de retorno .

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(""); } } }}

P>Passo 4: Neste passo criamos uma classe java myDbAdapter. java.

Neste passo definimos as funções que são usadas para executar as operações inserir, actualizar e apagar operações no SQLite. Além disso, esta classe cria outra classe que irá alargar o SQLiteOpenHelper. Cada função tem métodos equivalentes que executam operações.

Important Note – De acordo com a convenção de nomenclatura é sugerido definir a chave primária começando com o exemplo sublinhado: _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); } } }}

passo 5: Neste passo, criar outra classe java Message.class

Nisto basta adicionar um brinde para exibir a mensagem. Isto é opcional, é apenas adicionado uma e outra vez definindo toast no exemplo.

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
Executar agora a aplicação e visualizar a funcionalidade adicionada sobre os botões.
Actualização e Operação de Apagamento do SQlite no Estúdio Android

div>Actualização e Operação de Apagamento do SQlite no Estúdio Android

Adicionar & Recuperar Imagem da Base de Dados SQLite:

Para compreender como adicionar ou recuperar imagem do armazenamento externo do telefone para a aplicação utilizando a Base de Dados SQLite. Por favor leia o nosso passo a passo adicionar & recuperar imagem do tutorial SQLite.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *