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.
// 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.
//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);
}
}