Mobil Programlama Dünyası

Android Dışardan Veri Tabanı(SQLite) Ekleme

Öncelikle Kendimize ait DataBase sınıfı oluşturuyoruz. Bu sınıfımızdaki metodları aşağıda verdiğim kod parçacığında yorum satılarlarıyla açıklayacağım.

// Kod Bölümü
<textarea>
package com.example.semih.sqlite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class DataBase extends SQLiteOpenHelper {
        private static final int Versiyon =1;
        private static final String DByol="data/data/com.example.semih.sqlite/databases/";
        private static final String DBisim="yeni";
        private SQLiteDatabase SqlliteDB;
        Context contextim;

    public DataBase(Context context) {
        super(context,DBisim, null, Versiyon);
        contextim=context;
    
 // Kurucu metodum içine contetxt türünden bir değişken alıyor.
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        /*  Database yapımızı dışarıda SQLite Browser ile oluşturduğumuz için bu metodda herhangi bir işlem yapmıyoruz.
         */
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
      
    }

    public void DBolustur() throws IOException{
        this.getReadableDatabase();
        try {
            DBkopyala();
        } catch (IOException e) {
        }
     //Kopyala metodunu çağırıyor.
    }

    private void DBkopyala() throws IOException{
        InputStream myInput = contextim.getAssets().open(DBisim);
        String outFileName = DByol+ DBisim;
        OutputStream myOutput = new FileOutputStream(outFileName);
        byte[] bf = new byte[1024];
        int length;
        while ((length = myInput.read(bf)) > 0) {
            myOutput.write(bf, 0, length);
        }
        myOutput.flush();
        myOutput.close();
        myInput.close();
    //Bu bölümde projemiz içine mevcut dışardaki database imizi kopyalıyoruz.
    }

    public SQLiteDatabase getDatabase(){
        return SqlliteDB;
    }

    public void DBac() throws IOException{
        String AcilacakDb=DByol+DBisim;
        SqlliteDB = SQLiteDatabase.openDatabase(AcilacakDb, null, SQLiteDatabase.OPEN_READONLY);
    
 //Kopyalanan databaseimizi bu metod içinde açıyoruz.
    }

    @Override
    public synchronized void close() {
        if (SqlliteDB!= null)
            SqlliteDB.close();
        super.close();
    }

}
</textarea>
 

//Son

Yukarıda DBisim ve DByol diye iki String değişkenim bulunmaktadır. Bu değişkenlere Database ismimizi ve Programın kendi içine database i kopyalayacağı yerin yolunu yazıyoruz. Genel de program /data/data/package ismi/databases/ alanında DataBaseleri oluşturur. Bizde dışarıda SQLite Browser ile oluşturduğumuz DataBase i bu yola kopyalıyoruz. (Bu konuyla ilgili gelecegiyazanlar.turkcell.com.tr/ bu siteden daha geniş bilgiye ulaşabilirsiniz.)

Activity Bölümünde DataBase Sorguları :

     // Kod Kısmı : 
TextView t1;
DataBase dbHelper = new DataBase(this);
        try {
            dbHelper.DBolustur();

            dbHelper.DBac();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Cursor crs = dbHelper.getDatabase().rawQuery("SELECT * FROM tablo2 WHERE id >?", new String[]{"2"});
        
        while(crs.moveToNext()){
            String c = crs.getString(crs.getColumnIndex("Soyisim"));
            t1.append("\n" + c);
        }
    }
 
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol