Android Uzak Veritabanı Bağlantısı

0
Android Uzak Veritabanı Bağlantısı

Herkese merhaba bu yazıda uzak sunucuda barındırdığımız veritabanına erişip veri ekleyip veri getirmekten bahsedeceğim. Sqlite gibi veritabanları ile veri depolamak mümkün ancak bu veritabanları sadece kendi cihazlarımızda çalışır, biz online bir takım işlemler yapmak istersek verilerimizi bu şekilde uzak veritabanlarında barındırabiliriz. Burada ne yapacağımıza adım adım bakalım;

  • İlk öncelikle hosting tarafında bir veritabanı oluşturmalıyız ben mysql ile bir tane oluşturdum.
  • İkinci olarak bu veritabanına erişebilmek için php ile basit bir sayfa yapmalıyız bu android uygulamamız ile veritabanımız arasında bir bağ olacak aslında basit bir web servis diyebiliriz.
  • Üçüncü olarak verileri sunucuya gönderirken Volley kütüphanesini kullanacağız kullanımı çok kolay ve son zamanlarda popüler.
  • Son olarak da en son verileri alırken yine php sayfamız bize verileri JSON olarak gönderecek ve biz de JSON parçalayarak istediğimiz verileri elde edeceğiz.

Şimdi ilk olarak php sayfamıza bakalım;

<?php 
if($_POST)//kodları sayfada gizler { 
//veritabanına yazılacak bilgiler 
$ad = stripslashes($_POST["metin"]);//android uygulamadan aldığımız post mesajı 
//veritanı bağlantısı 
try{
$baglanti = new PDO("mysql:host=localhost;dbname=ibrahim;charset=utf8", "ibrahim", "ibrahim"); //veritabanı adı, veritabanı kullanıcı adı, veritabanı şifresi 
$baglanti -> setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);//hata mesajlarını görmek için

}
catch(PDOException $e)
{
 print $e -> getMessage();
}
//veritabanına ekleme işlemleri

$gir = $baglanti -> prepare("INSERT INTO metin SET ad = :a");//burada standart insert ile ekleme işlemi yapıyoruz
$sqlGit = $gir -> execute(array("a" => $ad));//execute ile çalıştırıyoruz ad değeri veritabanında ki alan adı


$query = $baglanti -> query("SELECT * FROM metin");//burada geri döndereceğimiz değerler için veritabanında ki tüm değerleri alıyoruz
 
 $JSON["isimler"]=array();//değerleri JSON adlı dizimiz "isimler" anahtar değeri ile aktarıyoruz.
 if($query -> rowCount())//veritabında kayıt varsa
 {
 foreach($query as $row)//veritabanında ki kayıt sayısınca dönüyoruz
 {
 
 $JSON["isimler"][]=$row["ad"];//elde edilen kayıtları dizimize aktarıyoruz
 
 }
 }
 
 else
 {
 echo "kayıt yok";
 }
echo json_encode($JSON);//en son elimizde ki diziyi bu şekilde JSON'a çeviriyoruz
}

?>

Buraya kadar bizi veritabanı ile konuşturacak php sayfamızı hazırladık. Burada PDO ile veritabanı bağlantısı yaptık standart mysql bağlantısı yapmadık çünkü artık o bağlantı çeşidinin miladını doldurduğu belirtiliyor ve de PDO sadece mysql değil daha bir çok veritabanı bağlantısını sağlayabiliyor gibi bir çok özelliği var. Bura da hem veriyi kaydediyoruz hem de bize veritabanında ki kayıtları JSON olarak geri döndermesini sağlıyoruz. Burada işin güzel tarafı ben buraya istediğim platformdan veri gönderebilirim ve gönderebildiğim takdirde alınan veri veritabanı işlemlerine tabi tutulabilir.

Şimdi android kımında bir adet buton ve bir adet editText’imiz var editText’den girdiğim değer veritabanına kaydoluyor ve eş zamalı olarak da veritabanı içerisinde ki tüm kayıtlar Toast ile ekranda gösteriliyor böyle de mükemmel mantıklı bir program tabi burada bir de volley kütüphanesini eklememiz gerekiyor onuda en kolay yöntem ile grandle kısmına

"compile 'com.mcxiaoke.volley:library:1.0.+'" bunu yapıştırırsak volley'in en güncel kütüphanesine de sahip olmuş oluruz.

Şimdi android kodlarına bakalım;

import...

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button buton=(Button)findViewById(R.id.button);
        final EditText text=(EditText)findViewById(R.id.editText);
        buton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                gonder(text.getText().toString());
          }
        });
        }
  void gonder(final String mesaj)
    {
        String url="http://ibrahimozcelik.net/kaydetDeneme/kaydet.php";//php dosyamızın olduğu adres
        final StringRequest istek=new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {//bağlantı için kullandığımız sınıf
            @Override
            public void onResponse(String response) {//geri dönen cevap json olarak
                 try {
                    JSONArray geriDonenVeri=null;//json dizisi oluşturuyoruz
                    JSONObject jsonObject=null;//dizinin içinde ki objelere ulaşmak için json obje oluşturuyoruz
                   
                    jsonObject=new JSONObject(response);//bize dönen cevabı obje olarak alıyoruz
                    geriDonenVeri=jsonObject.getJSONArray("isimler");//ve php sayfasında belirttiğimiz isim ile bunun altında ki verilere erişiyoruz
                    ArrayList gelen=new ArrayList();//bu isimler bir nevi anahtar değer gibi düşünülebilir
                  
                    for (int i=0;i<geriDonenVeri.length();i++)//json dizisinin boyutu kadar yani veritabanı uzunluğu kadar dönüyoruz
                    {
                         gelen.add(geriDonenVeri.getString(i));//geri dönen değerleri arraylist ile saklıyoruz
                         Toast.makeText(MainActivity.this,gelen.get(i).toString(),Toast.LENGTH_LONG).show();//ve aynı zamanda ekranda gösteriyoruz
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        },
        new Response.ErrorListener() {//herhangi bir hata varsa onaylanmadı şeklinde uyarı mesajı verdiriyoruz
                    @Override
                    public void onErrorResponse(VolleyError error) {//hata olursa geri dönen hata mesajı
                        Toast.makeText(MainActivity.this,"istek onaylanmadı",Toast.LENGTH_SHORT).show();
                    }
                }){
            protected Map getParams()//bu metodu ovveride ediyoruz ve sunucuya göndereceğimiz verileri buradan gönderiyoruz
            {//metod ismi aynen bu şekilde olmalı
                Map<String,String> params=new HashMap<String, String>();//Map yapısında göndereceğimiz değerin anahtar ve değer kısmı var
                params.put("metin",mesaj);//bu değerleri belirleyip bu satırda ki gibi yolluyoruz php sayfa da bu veriye misal "metin" anahtar
                
                return params;//değeri ile erişeceğiz bu değerin içeriğine
            }
                 };
        RequestQueue kuyruk=Volley.newRequestQueue(getApplicationContext());//burada artık istekler kuyruğa aktarılıyor ve işlemler gerçekleştiriliyor.
        kuyruk.add(istek);

    }
}

Bu kısımda dikkat etmemiz gereken durumlar JSON dizisini doğru parçalayabilmek ben bu şekilde yaptım şuan ama farklı yöntemlerde mevcut, durumdan duruma göre değişir tahmin edeceğiniz üzere. Veri gönderirken Map getParams metodu ile gönderiyoruz.

Uzak veritabanına erişmek bu kadar kolay burada ki bilgiler tabi ki temel bilgiler umarım yardımcı olmuştur, herkese iyi çalışmlalar.

 

 

LEAVE A REPLY