Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

MOB İ L UYGULAMA GEL İ ŞT İ RME Hafta 12. VER İ TABANI Di ğ er sistemlerde oldu ğ u Android projelerinde de verileri saklamak, hızlı bir biçimde erişmek,

Benzer bir sunumlar


... konulu sunumlar: "MOB İ L UYGULAMA GEL İ ŞT İ RME Hafta 12. VER İ TABANI Di ğ er sistemlerde oldu ğ u Android projelerinde de verileri saklamak, hızlı bir biçimde erişmek,"— Sunum transkripti:

1 MOB İ L UYGULAMA GEL İ ŞT İ RME Hafta 12

2 VER İ TABANI Di ğ er sistemlerde oldu ğ u Android projelerinde de verileri saklamak, hızlı bir biçimde erişmek, güncellemek, silmek gibi işlemler için veritabanları kullanılır. Android projelerinde kullanılan veritabanı çeşidi SQLite veritabanıdır. Veritabanı oluşturma ve di ğ er işlemler için SQLite kütüphanesi kullanılır.

3 VER İ TABANI SQLiteOpenHelper sınıfı

4 SQLite SQLiteOpenHelper, sınıfından miras alındı ğ ında oluşturucusunun, OnCreate metodu ve OnUpgrade metodunun ezdirilmesi gerekmektedir.

5 SQLite public class extends SQLiteOpenHelper { public (Context i[,varsa di ğ er parametreler]) { super(i,,null, ); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL ); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }

6 SQL Tablo oluşturmak için Create Table komutu kullanılır. Alanları oluştururken kullanılacak veri türleri metinleri saklamak için TEXT, sayısal de ğ erleri saklamak için NUMERIC, tamsayı de ğ erleri saklamak için INTEGER, ondalık sayıları saklamak için REAL, di ğ er veri türleri için NONE veri türü kullanılır.

7 execSQL Sayısal alanın benzersiz olması için AUTOINCREMENT, birincil alan olması için PRIMARY KEY kullanılır. Yabancı anahtar, tetikleyici v.b. SQL sorguları benzer şekilde gerçekleştirilir. Oluşturulan bu sınıf içerisinde SQL komutları çalıştırmak amacıyla kullanılır.

8 VERiTABANıNıN AÇıLMASı Kayıt ekleme, silme ve de ğ iştirme işlemleri SQLiteDatabase sınıfından bir nesne oluşturulup, getWritableDatabase metodu ile açılması gerekmektedir. Oluşturulan nesnenin getReadableDatabase metodu ile SELECT komutlarını çalıştırarak veritabanındaki kayıtları okumak amacıyla açılması sa ğ lanır.

9 rawQuery Tabloya kayıt ekleme, güncelleme ve silme işlemlerini SQL komutları kullanarak gerçekleştirmek için rawQuery metodu kullanılır. SQLiteDatabase =.getWritableDatabase(); String = ; data.rawQuery(, null); data.close();

10 KAYıT EKLEME SORGUSU SQLiteDatabase sınıfının insert veya insertOrThrow metodları kullanılır. ContentValues türünde bir de ğ işken oluşturulur. SQLiteDatabase =.getWritableDatabase(); ContentValues =new ContentValues();.put(, ); data.insertOrThrow(, null, );.close();

11 KAYıT SiLME SORGUSU SQLiteDatabase sınıfından oluşturulan sınıfın delete metodu kullanılır. Bu metodun birinci parametresi tablonun adı, ikinci parametre varsa where kısıtları, bu kısıtlarda de ğ erlerin gelece ğ i yere “?” konur. Üçüncü parametrede kısıtlarda kullanılacak de ğ erler bir dizi de ğ eri olarak burada dizi olarak girilir. SQLiteDatabase =.getWritableDatabase();.delete,, );.close();

12 KAYıT GÜNCELLEME SORGUSU Update metodunun; birinci parametresi, güncelleme yapılacak tablonun adıdır. İ kinci parametre de ğ işiklik yapılacak alanlar ve de ğ erleridir. Üçüncü parametre varsa where kısıtları, bu kısıtlarda de ğ erlerin gelece ğ i yere “ ? ” konur. Dördüncü parametrede kısıtlarda kullanılacak de ğ erler bir dizi de ğ eri olarak burada dizi olarak girilir.

13 KAYıT GÜNCELLEME SORGUSU SQLiteDatabase =.getWritableDatabase(); ContentValues =new ContentValues();.put(, );.update,,, );.close();

14 KAYıT L İ STELEME SQLiteDatabase sınıfından oluşturulan sınıfın query metodu kullanılır. Bu metodun geriye döndürdü ğ ü de ğ erleri almak için Cursor türünde bir de ğ işken tanımlanır ve sorgu sonucunda gelen de ğ erlere bu Cursor de ğ işkeni ile ulaşılır.

15 KAYıT L İ STELEME Metodun birinci parametresi sorgulanacak tablonun adıdır. İ kinci parametre sorgulama sonucunda alınmak istenen alanların listesidir. Üçüncü parametre where kısıtlarıdır, bu kısıtlarda de ğ erlerin gelece ğ i yere “ ? ” konur.

16 KAYıT L İ STELEME Dördüncü parametrede kısıtlarda kullanılacak de ğ erler bir dizi de ğ eri olarak burada dizi olarak girilir. Beşinci parametre varsa group by kısıtlarıdır. Altıncı parametre having kısıtlarıdır. Yedinci parametre sıralamanın belirlendi ğ i order by kısıtlarıdır.

17 ÖRNEK

18 LAYOUT DOSYASı <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" 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=".MainActivity" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Ad:" />

19 LAYOUT DOSYASı <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginTop="5dp" android:text="Soyad:" /> <EditText android:id="@+id/editText2" android:layout_width="100dp" android:layout_height="25dp" android:textSize="10sp" android:layout_alignTop="@+id/textView2" android:layout_toRightOf="@+id/kaydet" android:ems="10" />

20 LAYOUT DOSYASı <EditText android:id="@+id/editText1" android:layout_width="100dp" android:layout_height="25dp" android:textSize="10sp" android:layout_alignLeft="@+id/editText2" android:layout_alignTop="@+id/textView1" android:ems="10"> <Spinner android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/listele" android:layout_centerHorizontal="true" android:layout_marginTop="17dp" />

21 LAYOUT DOSYASı <Button android:id="@+id/sil" android:layout_width="100dp" android:layout_height="30dp" android:textSize="10sp" android:layout_alignLeft="@+id/kaydet" android:layout_below="@+id/kaydet" android:text="Sil" /> <Button android:id="@+id/listele" android:layout_width="100dp" android:layout_height="30dp" android:layout_alignLeft="@+id/editText2" android:layout_below="@+id/editText2" android:text="Listele" android:textSize="10sp" />

22 LAYOUT DOSYASı <Button android:id="@+id/kaydet" android:layout_width="100dp" android:layout_height="30dp" android:layout_above="@+id/spinner1" android:layout_alignLeft="@+id/textView2" android:text="Kaydet" android:textSize="10sp" />

23 VERiTABANı DOSYASı package com.example.veritabaniuyg; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class db extends SQLiteOpenHelper { public db(Context i) {super(i,"ornek",null, 1);} @Override public void onCreate(SQLiteDatabase db) { db.execSQL ("CREATE TABLE kisiler(id INTEGER PRIMARY KEY AUTOINCREMENT,ad TEXT, soyad TEXT);"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }

24 AKTiViTE DOSYASı package com.example.veritabaniuyg; import android.app.Activity; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast;

25 AKTiViTE DOSYASı public class MainActivity extends Activity { Button btn1; Button btn2; Button btn3; EditText ad; EditText soyad; TextView tx1; TextView tx2; Spinner liste; db vt; String[] dizim = null; ArrayAdapter arrayAdapter;

26 AKTiViTE DOSYASı @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn1=(Button) findViewById(R.id.kaydet); btn2=(Button) findViewById(R.id.listele); btn3=(Button) findViewById(R.id.sil); ad=(EditText) findViewById(R.id.editText1); soyad=(EditText) findViewById(R.id.editText2); tx1=(TextView) findViewById(R.id.textView1); tx2=(TextView) findViewById(R.id.textView2); liste=(Spinner) findViewById(R.id.spinner1); vt=new db(this);

27 AKTiViTE DOSYASı btn1.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { try{ String ad1=ad.getText().toString(); String soyad1=soyad.getText().toString(); kayitekle(ad1,soyad1); Toast.makeText(getApplicationContext(), "Kayıt Eklenmiştir!!!", Toast.LENGTH_LONG).show(); } finally{ vt.close(); } }});

28 AKTiViTE DOSYASı btn2.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { try{ String adisi=ad.getText().toString(); kayitlistele(adisi); } finally{ vt.close(); } }});

29 AKTiViTE DOSYASı btn3.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { try{ String adisi=ad.getText().toString(); kayitsil(adisi); Toast.makeText(getApplicationContext(), "Kayıt Silinmiştir!!!", Toast.LENGTH_LONG).show(); } finally{ vt.close(); } }); }

30 AKTiViTE DOSYASı protected void kayitlistele(String adisi) { SQLiteDatabase data=vt.getReadableDatabase(); Cursor okunan; String[] alanlar={"ad","soyad"}; if(adisi=="") okunan=data.query("kisiler", alanlar, null, null,null, null, null); else okunan=data.query("kisiler", alanlar, "ad=?", new String[]{adisi},null, null, null); String eleman=""; String adi=""; String soyadi=""; int i=0;

31 AKTiViTE DOSYASı dizim=new String[okunan.getCount()]; while(okunan.moveToNext()) { adi=okunan.getString(okunan.getColumnIndex("ad")); soyadi=okunan.getString(okunan.getColumnIndex("soyad")); eleman=adi+" "+soyadi; dizim[i]=eleman; i++; } arrayAdapter = new ArrayAdapter (this, android.R.layout.simple_list_item_1, dizim); liste.setAdapter(arrayAdapter); data.close(); }

32 AKTiViTE DOSYASı protected void kayitekle(String ad1, String soyad1) { SQLiteDatabase data=vt.getWritableDatabase(); ContentValues cv=new ContentValues(); cv.put("ad", ad1); cv.put("soyad", soyad1); /*cv.put("boy", boy1); cv.put("kilo", kilo1);*/ data.insertOrThrow("kisiler", null, cv); data.close(); } }

33 TELEFON GÖRÜŞMESi Android projesi içerisinde bir telefon numarasını aramak için telefon arama aktivitesini ça ğ ırmak gerekmektedir. Bunun için Intent altsınıfından ACTION_CALL aktivitesinden bir aktiviteyi ça ğ ırmak için bir Intent oluşturulur. Oluşturulan Intent’in setData metoduna aranacak de ğ er bir uri (uniform resource idendifier) ile aranacak numara başında “tel:” yazılarak sonrasında aranacak numara yazılır. (mesaj göndermek için sms: yazılır)tel:

34 TELEFON GÖRÜŞMESi Oluşturulan intent aktivitesi start edilerek arama gerçekleştirilir. Aramanın yapılabilmesi için proreje android.permission.CALL_PHONE izni verilmelidir.

35 AKTiViTE DOSYASı public class MainActivity extends Activity { EditText edt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); edt=(EditText)findViewById(R.id.editText1); } public void arama(View v) { String telefon=edt.getText().toString(); Intent ara=new Intent(Intent.ACTION_CALL); ara.setData(Uri.parse("tel:"+telefon)); startActivity(ara); } } AndroidManifest dosyası:

36 BLUETOOTH PROJESi Android projesinde bluetooth ile çalışmak için android.permission.BLUETOOTH, android.permission.BLUETOOTH_ADMIN izinlerinin alınması gerekir. Daha sonra BluetoothAdapter sınıfından bir de ğ işken tanımlanmalıdır.

37 BLUETOOTH PROJESi E ğ er bluetooth kapalı ise açmak için BluetoothAdapter.ACTION_REQUEST_ENABLE aktivitesini açacak bir intent oluşturarak aktivite başlatılmalıdır. Görünür yapmak için BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE de ğ erine sahip aktivitesini açacak bir intent oluşturarak aktivite başlatılmalıdır.

38 AKTiViTE DOSYASı public class MainActivity extends Activity { BluetoothAdapter btadpt=BluetoothAdapter.getDefaultAdapter(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void ac(View v) { if(!btadpt.isEnabled()) { Intent blue=new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); } }

39 AKTiViTE DOSYASı public void kapa(View v) { if(btadpt.isEnabled()) btadpt.disable(); } public void gyap(View v) { if(!btadpt.isEnabled()) { Intent blue=new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); } } }

40 KAYNAKLAR http://yazilimvehayat.blogspot.com/2012/04/sqlite-ile-android-uzerinde- database.htmlhttp://yazilimvehayat.blogspot.com/2012/04/sqlite-ile-android-uzerinde- database.html https://www.avealabs.com/blog/android-sqlite-database http://www.mehmetkirazli.com/android-dersleri-26-veritabani-islemleri-3-ve-sqlite- arayuzu-kullanimi/http://www.mehmetkirazli.com/android-dersleri-26-veritabani-islemleri-3-ve-sqlite- arayuzu-kullanimi/


"MOB İ L UYGULAMA GEL İ ŞT İ RME Hafta 12. VER İ TABANI Di ğ er sistemlerde oldu ğ u Android projelerinde de verileri saklamak, hızlı bir biçimde erişmek," indir ppt

Benzer bir sunumlar


Google Reklamları