free website stats program
8:44 am - Wednesday October 22, 2014

Memasukkan gambar di SQLite android

Oke berjumpa lagi dengan saya.

Di dalam artikel saya ini akan membahas tentang database di android khususnya menginput data gambar kemudian menampilkannya . database android yang kita gunakan adalah sqlite. Disini saya akan menggunakan fungsi Create, dengan Read saja.

Untuk melihat database yang tersimpan di database android kita perlu menginstall sqlite :
bagi yang belum menginstall sqlite bisa diikuti perintah berikut:

1. Buka Mozilla firefox -> Pilih Tools
2. Kemudian pilih add ons -> ketik di menu search sqlite manager
3. Install
Jika sqlite terinstall maka akan terlihat gambar seperti berikut

sqliteku

Dan tampilan interfacenya

interface

Setelah selesai coba dipersiapkan file gambar yang berekstensi .png yang berukuran paling kecil 100KB. Disini saya menggunakan file goku.png

Nah saatnya mulai untuk kodingnya. Seperti biasa hal yang perlu dilakukan

1. Buat New Project dari File>New>Android Application dengan ketentuan berikut:

  • Project Name : testBlob
  • Build Target : Android2.2
  • Application name : testBlob
  • Package name : test.blob
  • Activity : DBtest
  • MinSDK : 8
  • Click Finish

2. Setelah project tercreate maka secara otomatis membentuk 3 file yaitu:

  • main.xml
  • string.xml
  • DBtest.java

3. Edit main.xml ketikkan kode berikut ini

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 >
<TextView
	android:textSize="25dip"
	android:id="@ id/TextNama"
	android:layout_height="wrap_content"
	android:layout_width="fill_parent"
	android:textStyle="bold"
	android:layout_marginBottom="10dip"/>

<ImageView
	android:id="@ id/ImageView01"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content">
</ImageView>

<TextView
	android:textSize="25dip"
	android:id="@ id/TextSaiya"
	android:layout_height="wrap_content"
	android:layout_width="fill_parent"
	android:textStyle="bold"
	android:layout_marginBottom="10dip">
	</TextView>

<TextView
	android:textSize="25dip"
	android:id="@ id/TextVersi"
	android:layout_height="wrap_content"
	android:layout_width="fill_parent"
	android:textStyle="bold"
	android:layout_marginBottom="10dip">
	</TextView>

</LinearLayout>

4. Buat file baru bernama DragonBall.java berikut kodenya

package test.blob;

import android.graphics.Bitmap;

public class DragonBall {
	private Bitmap gambar;
	private String nama;
	private String saiya;
	private String versi;

	public DragonBall (Bitmap d, String n, String s, String v)
	{
		gambar = d;
		nama = n ; saiya = s; versi = v;

	}

	public Bitmap getBitmap(){return gambar;}
	public String getNama(){return nama;}
	public String getSaiya(){return saiya;}
	public String getVersi(){return versi;}
}

5. Buat file baru bernama DBhelper.java dan berikut kodenya

package test.blob;

import java.io.ByteArrayOutputStream;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

public class DBhelper {
 public static final String KEY_ID = "id";
 public static final String KEY_NAME = "nama";
 public static final String KEY_SAIYA = "saiya";
 public static final String KEY_VERSI = "versi";
 public static final String KEY_IMG = "gambar";

 private DatabaseHelper mDbHelper;
 private SQLiteDatabase mDb;

 private static final String DATABASE_NAME = "DBtesting";
 private static final int DATABASE_VERSION = 1;

 private static final String DRAGONBALL_TABLE = "dragonball";

 private static final String CREATE_DRAGONBALL_TABLE = "create table " DRAGONBALL_TABLE " ("
 KEY_ID Using our services you can enjoy your favorite Aussie  <a href="http://s4gambling.com/slot-machines">pokies</a>  online without any limits and restrictions. " integer primary key autoincrement, "
 KEY_IMG " blob not null, "
 KEY_NAME " text not null, "
 KEY_SAIYA " text not null, "
 KEY_VERSI " text not null);";

 private final Context mCtx;

 private static class DatabaseHelper extends SQLiteOpenHelper {
 DatabaseHelper(Context context) {
 super(context, DATABASE_NAME, null,DATABASE_VERSION);
 }

 public void onCreate(SQLiteDatabase db) {
 db.execSQL(CREATE_DRAGONBALL_TABLE);
 }

 public void onUpgrade(SQLiteDatabase db, int oldVersion,int newVersion) {
 db.execSQL("DROP TABLE IF EXISTS " DRAGONBALL_TABLE);
 onCreate(db);
 }
 }

 public void Reset() { mDbHelper.onUpgrade(this.mDb, 1, 1); }

 public DBhelper(Context ctx) {
 mCtx = ctx;
 mDbHelper = new DatabaseHelper(mCtx);
 }

 public DBhelper open() throws SQLException {
 mDb = mDbHelper.getWritableDatabase();
 return this;
 }

 public void close() { mDbHelper.close(); }

 public void DragonBallEntry(DragonBall testTokoh) {
 ByteArrayOutputStream out = new ByteArrayOutputStream();
 testTokoh.getBitmap().compress(Bitmap.CompressFormat.PNG, 100, out);
 ContentValues cv = new ContentValues();
 cv.put(KEY_IMG, out.toByteArray());
 cv.put(KEY_NAME, testTokoh.getNama());
 cv.put(KEY_SAIYA, testTokoh.getSaiya());
 cv.put(KEY_VERSI, testTokoh.getVersi());
 mDb.insert(DRAGONBALL_TABLE, null, cv);
 }

 public DragonBall getFirstDragonBallFromDB() throws SQLException {
 Cursor cur = mDb.query(true,
 DRAGONBALL_TABLE,
 new String[] {KEY_IMG, KEY_NAME, KEY_SAIYA, KEY_VERSI},
 null, null,null, null, null, null);
 if(cur.moveToLast()) {
 byte[] blob = cur.getBlob(cur.getColumnIndex(KEY_IMG));
 Bitmap bmp = BitmapFactory.decodeByteArray(blob, 0, blob.length);
 String name = cur.getString(cur.getColumnIndex(KEY_NAME));
 String saiya = cur.getString(cur.getColumnIndex(KEY_SAIYA));
 String versi =cur.getString(cur.getColumnIndex(KEY_VERSI));
 cur.close();
 return new DragonBall(bmp,name,saiya,versi);
 }
 cur.close();
 return null;
 }

 public void deleteRow(String nilai)
 {

 	try{
 		mDb.delete(DRAGONBALL_TABLE, KEY_ID "= " 3, null);
 	}catch(Exception e){
 		e.printStackTrace();
 	}

 }
}

6. Edit file DBtest

package test.blob;

import android.app.Activity;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;

public class DBtest extends Activity {
 private DBhelper DbHelper;

 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 //LinearLayout layout = new LinearLayout(this);
 //ImageView image = new ImageView(this);
 //TextView text = new TextView(this);
 ImageView imageku;
 DbHelper = new DBhelper(this);

 DragonBall testTokoh = new DragonBall(
 BitmapFactory.decodeResource(getResources(), R.drawable.goku),
 "Goku", "1", "DragonBall Z");
 DbHelper.open();
 // DbHelper.deleteRow("1");

 DbHelper.DragonBallEntry(testTokoh);
 // DbHelper.createFruitEntry(testFruit);
 DbHelper.close();

 testTokoh = null;

 DbHelper.open();
 testTokoh = DbHelper.getFirstDragonBallFromDB();
 DbHelper.close();

 imageku = (ImageView)findViewById(R.id.ImageView01);
 imageku.setImageBitmap(testTokoh.getBitmap());
 TextView textnama, textsaiya, textversi;
 textnama = (TextView)findViewById(R.id.TextNama);
 textsaiya = (TextView)findViewById(R.id.TextSaiya);
 textversi = (TextView)findViewById(R.id.TextVersi);
 textnama.setText("Nama : " testTokoh.getNama());
 textsaiya.setText("Saiya ke : " testTokoh.getSaiya());
 textversi.setText("Versi : " testTokoh.getVersi());
 }
}

Kemudian jangan lupa untuk memasukkan file gambar berada di dalam drawable :

drawable

Nah, silahkan di oprak oprek saja program di atas…
Yang jelas fungsi dibawah ini merupakan fungsi input

 public void DragonBallEntry(DragonBall testTokoh) {
 ByteArrayOutputStream out = new ByteArrayOutputStream();
 testTokoh.getBitmap().compress(Bitmap.CompressFormat.PNG, 100, out);
 ContentValues cv = new ContentValues();
 cv.put(KEY_IMG, out.toByteArray());
 cv.put(KEY_NAME, testTokoh.getNama());
 cv.put(KEY_SAIYA, testTokoh.getSaiya());
 cv.put(KEY_VERSI, testTokoh.getVersi());
 mDb.insert(DRAGONBALL_TABLE, null, cv);
 }

Dan fungsi dibawah ini fungsi untuk mengambil database dimulai dari yang paling akhir.

 public DragonBall getFirstDragonBallFromDB() throws SQLException {
 Cursor cur = mDb.query(true,
 DRAGONBALL_TABLE,
 new String[] {KEY_IMG, KEY_NAME, KEY_SAIYA, KEY_VERSI},
 null, null,null, null, null, null);
 if(cur.moveToLast()) {
 byte[] blob = cur.getBlob(cur.getColumnIndex(KEY_IMG));
 Bitmap bmp = BitmapFactory.decodeByteArray(blob, 0, blob.length);
 String name = cur.getString(cur.getColumnIndex(KEY_NAME));
 String saiya = cur.getString(cur.getColumnIndex(KEY_SAIYA));
 String versi =cur.getString(cur.getColumnIndex(KEY_VERSI));
 cur.close();
 return new DragonBall(bmp,name,saiya,versi);
 }
 cur.close();
 return null;
 }

Jika di run hasilnya seperti berikut :

testdrag

Sedangkan nama database yang kita create adalah DBtesting dengan gambar :

blob

Dan tampilan database di sqlite manager
database

Ya mungkin bisa menjadi bahan rujukan untuk teman” sekalian :D
saya termotifasi membuat artikel ini karena saya pernah memakai aplikasi Uber Social, dimana di aplikasi tersebut apabila tidak terkoneksi internet masih bisa menampilkan data yang terdapat di aplikasinya, dan selidik punya selidik rupanya data yang terdapat di uber telah memakan data selama kita melihat timeline. dan saya memakai object dragon ball karena saya menyukai kartun Dragonball . haha :D . Ya mungkin di artikel saya tidak terlalu advance mohon dimaklumi karena saya pun masih dalam tahap belajar (newbie). OK

Regards
Muhammad Iqbal Pradipta :D

Kata kunci:

Filed in: Android, Lainnya, Linux, Mobile, Pemrograman

One Response to “Memasukkan gambar di SQLite android”

  1. 26/12/2013 at 11:18 #

    Keren kang sangat membantu…

Leave a Reply