Raspberry Pi Raspbian kurulumu ve ilk GPIO uygulaması

Raspberry Pi Type B modelini aşağıdaki adresten edinebilirsiniz. https://www.samm.com/bilisim-urunleri/raspberry-pi-turkiye.html Aşağıdaki bağlantıda Raspberry'ye işletim sisteminin kurulumunu güzelce açıklamışlar. http://www.raspberrypi.org/help/noobs-setup/ Bu arada default kullanıcı adınız pi, sifreniz raspberry Masaüstü ekranına geçmek için startx komutunu yazmanız yeterli Yükleme sonrasında klavye dili İngilizce gelmekte. Öncelikle klavyeyi Türkçe yapmaya çalışacağız. Root yetkisiyle terminali açmak için. Başlat – Accessories – Root Terminal'i çalıştırıyoruz. Komut satırına

sudo nano /etc/default/keyboard

yazıp enter'a basıyoruz. Açılan sayfada "gb" yazın yeri "tr" yapıp kaydediyoruz (ctrl+x çıkş, akydetmek isteyip istemediğimizi soracaktır. Y diyip entera basıyoruz). Yeniden başlattığımızda klavye dilimiz Türkçe olacaktır. Sıradaki işlem ekran çözünürlüğü Root yetkisiyle terminali açtıktan sonra

tvservice –d edid

edidparser edid

gelen bilgilerden en uygun ekran çözünürlüğünü seçeceğiz her çözünürlüğe bir score verilmiş.

nano boot/config.txt

Doküman içerisinde hmdi_group=1 #1=cea 2=dmt hdmi_mode=4 #benim monitörümde en uygunu bu görünüyordu iki kodun başındaki # işaretini kaldırmayı unutmayın kaydettikten sonra

shutdown –r now

komutu ile raspberrynizi yeniden başlatabilirsiniz.   Bu ayarlamalardan sonra sıra python ortamının ayarlarının yapılmasına geliyor. GPIO (Raspberry üzerindeki programlanabilir pinler) desteği için

Sudo apt-get update

Sudo apt-get install python-dev

Pypi.python.org sitesinden RPi.GPIO'nun son sürümünü indirin ve indirme işleminden sonra klasöre gidin.

Tar zxvf RPi.GPIO…..

Cd RPi.GPIO……

Sudo python setup.py install

Tüm bu ayarlamalardan sonra artık python ortamını açabiliriz.

Sodu idle

File-new window diyerek yeni sayfa açıyoruz ve aşağıdaki kodları yapıştırıp çalıştırıyoruz.

Python'da tab karakterinin de önemli olduğunu unutmayın. Kodları yukarıdan aşağı dümdüz yazarsanız hata ile karşılaşırsınız. Kodları iç içe yazmayı unutmayın.

import RPi.GPIO as GPIO

import time

# blinking function

def blink(pin):

    GPIO.output(pin,True)

    time.sleep(1)

    GPIO.output(pin,False)

    time.sleep(1)

    return

# to use Raspberry Pi board pin numbers

GPIO.setmode(GPIO.BOARD)

# set up GPIO output channel

GPIO.setup(7, GPIO.OUT)

# blink GPIO17 50 times

for i in range(0,50):

    blink(7)

GPIO.cleanup()

  Kablolamayı ise şu şekilde yapıyoruz.

6. bacak toprak ve 7. Bacak sinyal.

Android Veritabanı ListView kullanımı

Bir önceki projemizde Android'te veritabanı kullanımını anlatmıştık. Örneğimizde kayıt listelemek için textView nesnesi kullanmıştık. Aynı örneği bir de listview kullanarak tekrarlayacağız. İki projede de aynı olan bölümleri tekrar etmeyip sadece farklı olan kısımları işleyeceğim. İlk değişikliğimiz vtIslem.java dosyasında tumKayitlar() methodunda olacak.  

	public ArrayAdapter<String> tumKayitlar(Context context) 
	{
        String[] sutunlar = new String[] { "ad", "soyad", "tel"};
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor c = db.query("rehber", sutunlar, null, null,null, null, null);

        int adSiraNo = c.getColumnIndex("ad");
        int soyadSiraNo = c.getColumnIndex("soyad");
        int telSiraNo = c.getColumnIndex("tel");
        String dizi[]=new String[c.getCount()];
        int sayac=0;
        for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
        	dizi[sayac]=c.getString(adSiraNo) + "    "  + c.getString(soyadSiraNo) + "  " + c.getString(telSiraNo);
        	sayac+=1;
        }

        ArrayAdapter AA= new ArrayAdapter<String>(context,android.R.layout.simple_list_item_1,dizi);  
        return AA;
    }

      activity_main.xml dosyamız aşağıdaki gibi düzenliyoruz. Önceki projeden farklı olarak textview değil composite menüsünden ListView nesnesi kullanıyoruz.

   

MainActivity.java dosyasında; Sınıfın genel deklarasyon bölümünde adaptör isimli bir değişken tanımlıyoruz.  

ArrayAdapter adaptor;

oncreate methodunda listviewimizi tanıtıyoruz.  

final ListView lvKayitlar=(ListView)findViewById(R.id.lvKayitlar);

  Aynı yerde veritabanındaki kayıtları çekiyoruz.  

		adaptor= vtIslem.tumKayitlar(getApplicationContext());
        	lvKayitlar.setAdapter(adaptor);
        	lvKayitlar.setTextFilterEnabled(true);

      buton içerisinde de kayıt eklendikten sonra güncel veritabanını görüntülemek için kayıtları tekrar adaptöre alıyoruz.

        adaptor= vtIslem.tumKayitlar(getApplicationContext());

        lvKayitlar.setAdapter(adaptor);

      Hepsi bu kadar. Aşağıda örnek için yazılan tüm kodlar verilmiştir.   vtIslem.java  

package com.enverkulahli.e03veritabani;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.ArrayAdapter;

public class vtIslem extends SQLiteOpenHelper 
{

	public vtIslem(Context context, String name, CursorFactory factory,
			int version) 
	{
		super(context, name, factory, version);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void onCreate(SQLiteDatabase db) 
	{
		// TODO Auto-generated method stub
		db.execSQL("CREATE  TABLE  IF NOT EXISTS rehber (id INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , ad VARCHAR, soyad VARCHAR, tel VARCHAR)");
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
	{
		// TODO Auto-generated method stub
		db.execSQL("DROP TABLE IF EXIST rehber;");
	}

	public void kayitekle( String adi,String soyadi, String tel)
	{
		SQLiteDatabase db=this.getWritableDatabase();
		db.execSQL("INSERT INTO rehber(ad,soyad,tel) VALUES('" + adi + "','" + soyadi + "','" + tel + "')");

	}

	public ArrayAdapter<String> tumKayitlar(Context context) 
	{
        String[] sutunlar = new String[] { "ad", "soyad", "tel"};
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor c = db.query("rehber", sutunlar, null, null,null, null, null);

        int adSiraNo = c.getColumnIndex("ad");
        int soyadSiraNo = c.getColumnIndex("soyad");
        int telSiraNo = c.getColumnIndex("tel");
        String dizi[]=new String[c.getCount()];
        int sayac=0;
        for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
        	dizi[sayac]=c.getString(adSiraNo) + "    "  + c.getString(soyadSiraNo) + "  " + c.getString(telSiraNo);
        	sayac+=1;
        }

        ArrayAdapter AA= new ArrayAdapter<String>(context,android.R.layout.simple_list_item_1,dizi);  
        return AA;
    }

}

MainActivity.java  

package com.enverkulahli.e03veritabani;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity 
{
	private vtIslem vtIslem;
	ArrayAdapter adaptor;

		@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		vtIslem=new vtIslem(this, "rehber", null, 1);

		final EditText txtAd=(EditText)findViewById(R.id.txtAd);
		final EditText txtSoyad=(EditText)findViewById(R.id.txtSoyad);
		final EditText txtTel=(EditText)findViewById(R.id.txtTel);
		Button btnKaydet=(Button)findViewById(R.id.btnKaydet);
		final TextView tvSonuc=(TextView)findViewById(R.id.tvSonuc);
		//final TextView tvKayitlar=(TextView)findViewById(R.id.tvKayitlar);
		final ListView lvKayitlar=(ListView)findViewById(R.id.lvKayitlar);

		adaptor= vtIslem.tumKayitlar(getApplicationContext());
        lvKayitlar.setAdapter(adaptor);
        lvKayitlar.setTextFilterEnabled(true); 

		btnKaydet.setOnClickListener(new View.OnClickListener() 
		{
			@Override
			public void onClick(View arg0) 
			{
				vtIslem.kayitekle( txtAd.getText().toString(), txtSoyad.getText().toString(), txtTel.getText().toString());
				tvSonuc.setText("kayıt girildi");	

				adaptor= vtIslem.tumKayitlar(getApplicationContext());
		        lvKayitlar.setAdapter(adaptor);
		        //lvKayitlar.setTextFilterEnabled(true); 
		        //tvKayitlar.setText(tumKayitlar);

			}
		});

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

Activity_main.xml  

<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/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_below="@+id/textView2"
        android:layout_marginTop="29dp"
        android:text="Ad"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/TextView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_below="@+id/textView2"
        android:layout_marginTop="70dp"
        android:text="Soyad"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/TextView02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="65dp"
        android:text="Telefon"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <Button
        android:id="@+id/btnKaydet"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="27dp"
        android:layout_toRightOf="@+id/TextView02"
        android:text="Kaydet" />

    <TextView
        android:id="@+id/tvSonuc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/TextView02"
        android:layout_alignRight="@+id/txtTel"
        android:layout_below="@+id/btnKaydet"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/txtAd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/btnKaydet"
        android:layout_alignTop="@+id/textView1"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/txtSoyad"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/txtAd"
        android:layout_alignTop="@+id/TextView01"
        android:ems="10" />

    <EditText
        android:id="@+id/txtTel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/txtSoyad"
        android:layout_alignTop="@+id/TextView02"
        android:ems="10"
        android:inputType="phone" />

    <ListView
        android:id="@+id/lvKayitlar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/tvSonuc"
        android:layout_below="@+id/btnKaydet"
        android:layout_marginTop="51dp"
         >
    </ListView>

</RelativeLayout>

     

Android Veritabanı

Öncelikle Android ortamında veritabı işlemlerini kolaylaştırabilmek için bir adet sınıf oluşturacağız. Oluşturacağımız sınıfı SQLiteOpenHelper'dan extend etmemiz gerekiyor ki veritabanı işlemlerini bu sınıfta gerçekleştirebilelim. Bu işlem için package explorer ekranında src klasörü içindeki paketimize sağ tıklayarak new-class seçeneğini işaretliyoruz.

 

Oluşturduğumuz sınıfa vtIslem ismini verdim. vtIslem sınıfını SQLiteOpenHelper'dan extend ediyoruz.  

Oluşturduğumuz sınıfın onCreate ve onUpgrade method'larını tanımlamamız gerekiyor. Bunun için Source- override implement methods'a gelip onCreate ve onUpgrade seçenekleri işaretliyken ok butonuna basıyoruz. Böylelikle onCreate ve onUpgrade methodları kod kısmına ekleniyor.  

vtIslem sınıfının altı çizi yani hata veriyor. Bu hatadan kurtulabilmek için constructor oluşturmamız gerekiyor. Hatanın üzerine fareyle gelip "add constructor" linkine (ben 1. Seçeneği tercih ettim şu an için DatabaseErrorHandler kullanmayacağım) tıklıyoruz.  

vtIslem sınıfı içerisinde olluşturmuş olduğumuz onCreate methodu, proje çalıştığında veritabanı yoksa veritabanı oluşturmak için kullanılacak. onUpgrade methodu ise projemizde bir güncelleme yaptığımızda veritabanının silinmesi için kullanılacaktır. Eski verileri saklamak ve güncellemeden sonra da kullanmak istiyorsak taşıma gibi işlemleri de bizim oluşturmamız gerekiyor. Bu örnekte upgrade işleminde eğer veritabanı varsa silinecektir.   Veritabanı oluşturmak silmek gibi komutları bizim oluşturmamız gerekiyor. Bunu farklı örnek sitelerinden yapabilir ya da bir editör kullanabiliriz. Ben bu örnekte Mozilla Firefox'un sqlite eklentisini kullanacağım.

Firefox ekranında Menü-Eklentiler ekranında sqlite manager'ı arattırıp kurabilirsiniz. Sonrasında menü-web geliştirici-sqlite manager bağlantısına tıklayarak SQLite Manager uygulamasını başlatıyoruz.

Sqlite manager ekranında yeni bir veritabanı oluşturuyoruz. Table üzerine sağ tıklayarak new table diyoruz ve Veritabanı içerisinde oluşturmak istediğimiz tablo özelliklerini girerek bir tablo oluşturuyoruz (if not exists seçeneğini işaretlemeyi unutmayın).

Bu ekranda ok tuşuna bastığımızda bize tablo oluşturak için gerekli olan kodu verecektir.

Burdaki kodu kopyalayarak oncreate methodunun içine db.execSQL(""); koduyla birlikte yapıştırıyoruz. Bu işlemde tırnak işaretlerine dikkat etmeniz gerekmektedir. Kodun son hali şöyle olmalıdır.    

db.execSQL("CREATE TABLE IF NOT EXISTS rehber (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , ad VARCHAR, soyad VARCHAR, tel VARCHAR)");

  Benzer şekilde sqlite manager'da oluşturduğumuz tabloyu silerek onUpgrade eventının kodunu da kopyalıyoruz. Drop table komutuna if exist deyimini de ekleyerek düzenliyoruz. Aynı zamanda veritabanını sildikten sonra yenisini oluşturmak için oncreate methodunu da tekrar çağırıyoruz. vtIslem sınıfında onUpgrade methodunun son hali şöyle olmalıdır.  

db.execSQL("DROP TABLE IF EXIST rehber;");

onCreate(db);

Artık sınıfımız içinde kullanacağımız kayıt ekleme ve kayıtları listeleme methodlarımızı oluşturabiliriz. Kayıt eklemek için kullanacağımız method şu şekildedir:    

	public void kayitekle( String adi,String soyadi, String tel)
	{
		SQLiteDatabase db=this.getWritableDatabase();
		db.execSQL("INSERT INTO rehber(ad,soyad,tel) VALUES('" + adi + "','" + soyadi + "','" + tel + "')");
	}

Tüm kayıtları görüntülemek için kullanacağımız metod ise şu şekilde:  

	public String tumKayitlar() 
	{
        String[] sutunlar = new String[] { "ad", "soyad", "tel"};
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor c = db.query("rehber", sutunlar, null, null,null, null, null);
        String tumKayitlar = "";

        int adSiraNo = c.getColumnIndex("ad");
        int soyadSiraNo = c.getColumnIndex("soyad");
        int telSiraNo = c.getColumnIndex("tel");

        for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {

            tumKayitlar = tumKayitlar + c.getString(adSiraNo) + "    "
                    + c.getString(soyadSiraNo) + "  " 
            		+ c.getString(telSiraNo)   + " \n";
        }

        return tumKayitlar;
    }

vtIslem Sınıfımızdaki işlemlerimiz bu kadar. Öncelikle activity_main.xml dosyamız aşağıdaki gibi düzenliyoruz.  

 

Artık mainActivity.java dosyamıza geçerek oradaki işlemlerimizi gerçekleştirebiliriz. Öncelikle genel deklarasyonda vtIslem sınıfımızdan bir değişken oluşturuyoruz.

 

private vtIslem vtIslem;

  oncreate methodunda ise bu değişken içine vtIslem sınıfından bir nesne türetiyoruz.

vtIslem=new vtIslem(this, "rehber", null, 1);

 

activity_main.xml içerisinde oluşturduğumuz bileşenleri tanıtıyoruz.  

		final EditText txtAd=(EditText)findViewById(R.id.txtAd);
		final EditText txtSoyad=(EditText)findViewById(R.id.txtSoyad);
		final EditText txtTel=(EditText)findViewById(R.id.txtTel);
		Button btnKaydet=(Button)findViewById(R.id.btnKaydet);
		final TextView tvSonuc=(TextView)findViewById(R.id.tvSonuc);
		final TextView tvKayitlar=(TextView)findViewById(R.id.tvKayitlar);
		btnKaydet.setOnClickListener(new OnClickListener() 
		{
			@Override
			public void onClick(View arg0) 
			{
				// TODO Auto-generated method stub

			}
		});

Butonun onclick methodunda kullanıcıdan aldığımız bilgileri veritabanına kaydediyor ve tüm kayıtları text view nesnemizde gösteriyoruz.  

vtIslem.kayitekle( txtAd.getText().toString(), txtSoyad.getText().toString(), txtTel.getText().toString());
			tvSonuc.setText("kayıt girildi");	

		      String tumKayitlar=vtIslem.tumKayitlar();
		      tvKayitlar.setText(tumKayitlar);

Ve sonuç…

 

Hepsi bu kadar. Aşağıda örnek için yazılan tüm kodlar verilmiştir.   vtIslem.java  

package com.enverkulahli.e03veritabani;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class vtIslem extends SQLiteOpenHelper 
{

	public vtIslem(Context context, String name, CursorFactory factory,
			int version) 
	{
		super(context, name, factory, version);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void onCreate(SQLiteDatabase db) 
	{
		// TODO Auto-generated method stub
		db.execSQL("CREATE  TABLE  IF NOT EXISTS rehber (id INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , ad VARCHAR, soyad VARCHAR, tel VARCHAR)");
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
	{
		// TODO Auto-generated method stub
		db.execSQL("DROP TABLE IF EXIST rehber;");
	}

	public void kayitekle( String adi,String soyadi, String tel)
	{
		SQLiteDatabase db=this.getWritableDatabase();
		db.execSQL("INSERT INTO rehber(ad,soyad,tel) VALUES('" + adi + "','" + soyadi + "','" + tel + "')");


	}

	public String tumKayitlar() 
	{
        String[] sutunlar = new String[] { "ad", "soyad", "tel"};
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor c = db.query("rehber", sutunlar, null, null,null, null, null);
        String tumKayitlar = "";

        int adSiraNo = c.getColumnIndex("ad");
        int soyadSiraNo = c.getColumnIndex("soyad");
        int telSiraNo = c.getColumnIndex("tel");

        for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
 
            tumKayitlar = tumKayitlar + c.getString(adSiraNo) + "    "
                    + c.getString(soyadSiraNo) + "  " 
            		+ c.getString(telSiraNo)   + " \n";
        }
 
        return tumKayitlar;
    }

	
	
	

}

MainActivity.java  

package com.enverkulahli.e03veritabani;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity 
{
	private vtIslem vtIslem;
		
		@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		vtIslem=new vtIslem(this, "rehber", null, 1);
		
		final EditText txtAd=(EditText)findViewById(R.id.txtAd);
		final EditText txtSoyad=(EditText)findViewById(R.id.txtSoyad);
		final EditText txtTel=(EditText)findViewById(R.id.txtTel);
		Button btnKaydet=(Button)findViewById(R.id.btnKaydet);
		final TextView tvSonuc=(TextView)findViewById(R.id.tvSonuc);
		final TextView tvKayitlar=(TextView)findViewById(R.id.tvKayitlar);
		btnKaydet.setOnClickListener(new OnClickListener() 
		{
			@Override
			public void onClick(View arg0) 
			{
				vtIslem.kayitekle( txtAd.getText().toString(), txtSoyad.getText().toString(), txtTel.getText().toString());
				tvSonuc.setText("kayıt girildi");	
	         
		        String tumKayitlar=vtIslem.tumKayitlar();
		        tvKayitlar.setText(tumKayitlar);
				
			}
		});

		
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

Activity_main.xml  

<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/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_below="@+id/textView2"
        android:layout_marginTop="29dp"
        android:text="Ad"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/TextView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_below="@+id/textView2"
        android:layout_marginTop="70dp"
        android:text="Soyad"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/TextView02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="65dp"
        android:text="Telefon"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <Button
        android:id="@+id/btnKaydet"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="27dp"
        android:layout_toRightOf="@+id/TextView02"
        android:text="Kaydet" />

    <TextView
        android:id="@+id/tvSonuc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/TextView02"
        android:layout_alignRight="@+id/txtTel"
        android:layout_below="@+id/btnKaydet"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/txtAd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/btnKaydet"
        android:layout_alignTop="@+id/textView1"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/txtSoyad"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/txtAd"
        android:layout_alignTop="@+id/TextView01"
        android:ems="10" />

    <EditText
        android:id="@+id/txtTel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/txtSoyad"
        android:layout_alignTop="@+id/TextView02"
        android:ems="10"
        android:inputType="phone" />

    <TextView
        android:id="@+id/TextView03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/tvSonuc"
        android:layout_alignRight="@+id/txtTel"
        android:layout_below="@+id/btnKaydet"
        android:layout_marginTop="47dp"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

   

Android Projeye yeni aktivity eklemek

Bu yazımızda projemize yeni bir activity ekleme ve ana activity'nin kapatılmasını önlemekten bahsedeceğiz. Projemize yeni bir activity eklemek için file-new-other-android activity yolunu izliyoruz. Şablon olarak blank activity seçiyoruz ve ileri diyoruz. Sıradaki adımımız birazcık önemli. Bu adımda oluşturacağımız activity'e isim veriyoruz ve ardından "Hierarchical Parent" bölümüne Mainactivity dosyamizi gösteriyoruz. Bu kısımda eclipse'te kayıtlı olan diğer projeler de göründüğü için şu anda çalıştığımız projenin activity'sini seçtiğimizden emin olmamız gerekiyor.  

İleri diyerek activity'mizi oluşturuyoruz. Mainactivity'den bir butonla 2. Activity'e geçeceğiz, bu yüzden mainactivity içine bir buton ekleyip ayarlarını yapıyoruz ve onclick eventini oluşturuyoruz. Burda bahsi geçen işlemler bir önceki konuda anlatıldığından ayrıntıya girmiyorum. Oluşturduğumuz click eventinin içine aşağıdaki kodları yazıyoruz.

                Intent intent=new Intent(MainActivity.this,Sayfa2Activity.class);

                startActivity(intent);

Projeyi çalıştırıp test ettiğimizde, butona basıldığında ikinci sayfaya gidildiğini, 2. Sayfanın geri butonuyla da ana sayfamıza döndüğümüzü görürüz. Burada ufak bir ayrıntı daha var. Bu şekilde çalıştırdığımızda 2.sayfaya gidip geri dönüldüğünde 1. Sayfa yeniden başlatılır ve (varsa) üzerinde gerçekleştirdiğimiz işlemler sıfırlanır. Bunu önlemek için; AndroidManifest.xml dosyasında xml görünümünde MainActivity'ye android:launchMode="singleInstance" kodunu ekliyoruz.

Şimdi de Sayfa2Activity.java dosyasında menüden "source-override implement methods"a gelip "onBackPressed" eventını seçiyoruz.  

Sayfa2Activity.java dosyasında onBackPressed yordamında yazan "super.onBackPressed();" komutunu siliyor ya da açıklama satırı haline getiriyoruz. Böylelikle 2. Sayfaya geçsek bile bir önceki sayfaya geri döndüğümüzde işlemimize kaldığımız yerden devam edebiliyoruz.    

Android İlk Proje: İki sayı toplama

Bir önceki yazımızda Yazılım geliştirme ortamının nasıl hazırlanacağından bahsetmiştik. Bu yazımızda da ilk uygulamamızı geliştireceğiz. Öncelikle projemizin "activity_main.xml" dosyasını açıp bazı bileşenler eklememiz gerekiyor. İki adet "medium text" (text view) sayı1 ve sayı2 labelları için. İki adet "edit text" kullanıcının girdiği sayıları okuyabilmek için. Bir "buton" kullanıcının kodumuzu çalıştırabilmesi için. Bir "large text" (text view) işlem sonucunun görünebilmesi için. Nesnelerin üzerindeki yazıları properties bölümünde text alanından değiştirebilirsiniz.

Eklediğimiz bileşenlerden editText'ler buton ve largetext nesnelerimiz bizim için çok önemlidir. Kod kısmında bunlara erişmemiz gerektiğinden bu nesnelerin id bilgilerine ihtiyaç duymaktayız. bu bilgiyi properties bölümünden id kısmından değiştirebilirsiniz. Bu proje için sayı1 için txtSayi1, sayı2 için txtSayi2, buton için btnHesapla ve son olarak sonuç için tvSonuc idlerini verdim. Buton için örnek properties:

Artık kod yazmaya başlayabiliriz. "MainActivity.java" dosyasını açıyoruz. Öncelikle dosya içerisindeki kısımları bir tanıyalım. Aşağıdaki ekran görüntüsünde açıklamalarla kısaca özetlemeye çalıştım.

İlk etapta kod yazarken ihtiyaç duyacağımız ve activity_main.xml içerisinde oluşturduğumuz nesneleri bulmamız gerekiyor. Bunun için R.java'dan faydalanacağız.

        final EditText txtSayi1=(EditText)findViewById(R.id.txtSayi1);

        final EditText txtSayi2=(EditText)findViewById(R.id.txtSayi2);

        final TextView tvSonuc=(TextView)findViewById(R.id.tvSonuc);

        Button btnHesapla=(Button)findViewById(R.id.btnHesapla);

Bileşenleri tanıtırken EditText, TextView, Button nesnelerini daha önce kullanmadığımız için tanımayacaktır ve altlarını çizecektir. Bu sorunu gidermek için ilk yöntem hatanın olduğu yerde mouse'la bekleyip açılır pencereden nesneyi import etmek. Diğer yöntem import'u elle yazmak. Son yöntem ise proje içerisindeki bütün import hatalarını düzenlemek için source menüsünden organize imports (Ctrl+Shift+O) seçeneğini kullanmaktır.

Sıradaki adımımız butonumuzun onclick eventini oluşturmaktır. Bu işlemi activity'nin oncreate event'ının içerisine yazacağız.  

		btnHesapla.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub

			}
		});

  Onclicklistener ve View bileşenleri de import edilmek isteyecektir. Bunu için de yukarıda bahsettiğimiz yöntemlerden birini kullanabilisiniz. Son adımımız dönüştürme, hesaplama ve yazdırma işlemleridir.

				float sayi1f=Float.parseFloat(txtSayi1.getText().toString());
				float sayi2f=Float.parseFloat(txtSayi2.getText().toString());
				tvSonuc.setText(String.valueOf(sayi1f+sayi2f));

  MainActivity içerisindeki tüm kodlar şu şekildedir.  

//projemizin paketi
package com.enverkulahli.ilkproje;
//projemizde ihtiyaç duyacağımız bileşenler
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

//MainActivity sınıfımız
public class MainActivity extends Activity {


	
	//activity oluşturulduğunda çalıştırılacak kısım
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		final EditText txtSayi1=(EditText)findViewById(R.id.txtSayi1);
		final EditText txtSayi2=(EditText)findViewById(R.id.txtSayi2);
		final TextView tvSonuc=(TextView)findViewById(R.id.tvSonuc);
		Button btnHesapla=(Button)findViewById(R.id.btnHesapla);
		
		btnHesapla.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				float sayi1f=Float.parseFloat(txtSayi1.getText().toString());
				float sayi2f=Float.parseFloat(txtSayi2.getText().toString());
				tvSonuc.setText(String.valueOf(sayi1f+sayi2f));
			}
		});

	}
	//option menusu oluşturulduğunda çalıştırılacak kısım
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

    Ve sonuç….

Android Yeni Proje oluşturma

Android üzerine program geliştirebilmek için http://developer.android.com adresinden "Get the SDK" linkine tıklayarak Android SDK (Software Development Kit) ve ADT (Android Developer Tools) bileşenlerinin tamamının bulunduğu paketi indiriyoruz.

Paket içerisinde;

  • Eclipse + ADT plugin
  • Android SDK Tools
  • Android Platform-tools
  • The latest Android platform
  • The latest Android system image for the emulator

Bileşenleri mevcut ve kurulum gerektirmiyor. Tüm paketi bir klasöre çıkarttıktan sonra "eclipse" uygulamasını çalıştırıyoruz. İlk proje için "File-New-Android Application Project" seçeneğine tıklıyoruz.

Açılan pencerede bilgileri doldurduktan sonra "next" butonuna tıklayarak ilerliyoruz. Şimdilik boş proje oluşturacağımızdan diğer adımlar da "next" butonuyla geçilebilir.

İşlemlerin ardından projemiz eclipse ekranına geldi. Projemizi ilk haliyle çalıştırmak için araç çubuğunda bulunan "Run" butonuna tıklıyoruz.

Run butonuna bastığımızda projeyi ne olarak çalıştırmak istediğimiz sorusuna Android Application cevabını verdikten sonra eğer sistemimizde tanımlı bir AVD (Android Virtual Device) yoksa oluşturmak isteyip istemediğimizi soracaktır. Evet cevabını vererek ADV Manager'ın açılmasını sağlıyoruz. AVD'de istediğimiz özelliklerde bir virtual device oluşturup çalıştırıyoruz.

 

Proje dosyaları otomatik olarak hazırlanacak ve projemizin "apk" uzantılı kurulum dosyası virtual device'a gönderilerek kurulacaktır. Bu adım bilgisayarınızın performansına göre biraz zaman alabilir.

Burda görülen Virtual Device, işletim sistemi ve özellikleri olarak dışardan alınan cihazların birebir kopyasıdır. Projeyi kendi cihazınızda çalıştırmadan önce burada simülasyonunu yapabilirsiniz. Küçük bir tavsiye: Çalışma esnasında AVD'yi kapatmayın, aksi takdirde her seferinde cihazın açılmasını beklemek zorunda kalırsınız. Değişiklik yapıp tekrar run ettiğinizde eski proje otomatik olarak yenisiyle değiştirilir. Son olarak projemizin önemli dosya ve klasörlerinden bahsedeceğiz:        MainActivity.java : Projemizin Kodlarını yazacağımız bölümdür. İçerisinde bulunduğu Src klasöründe birden fazla package ve içerisinde birden fazla activity bulunabilir.         R.java: Projemiz içerisindeki kodlarla kullanıcı arayüzündeki bileşenler arasındaki bağlantıyı sağlayacak dosyadır.        ilkProje.apk: Bu dosya projemizin setup dosyasıdır. Kendi cihazınızda bu dosyayı çalıştırarak program kurulumunu sağlayabilirsiniz.       activity_main.xml: Bu dosya kullanıcıya gösterilecek arayüzdür res-layout içerisinde bulunur. Res klasörü ise projemizdeki resources(kaynak)'ları ifade etmektedir.       main.xml: res-menu içerisinde bulunur ve programımızın üst menüsünü ifade eder.       Strings.xml: res-values içerisinde bulunur ve program içerisinde kullandığımız yazıları tutmakta kullanılır. Kullanımı zorunlu değildir fakat dil desteği olan bir program geliştirilecekse kolaylık sağlayacaktır.       AndroidManifest.xml: Proje yapılandırma dosyasıdır aynı zamanda proje içerisinde kullanacağımız bileşenlerin izinlerinin de alındığı bölümdür.    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Konu 36: tukan uygulaması. veritabani, modül ve vt işlemleri, iki tabloda işlem, vt'den sorgu çağırma(rapor)

Örnek Uygulama

Ekran Görüntüsü

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        urunler.ShowDialog()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        musteriler.ShowDialog()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        satis.ShowDialog()
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim gun As Integer = Now.Day

        Dim sql As String = "select * from musteri where maasGunu=" & gun & ""
        Dim vt As New veritabani
        Dim dt As DataTable = vt.VeriGoster(sql)
        For i As Integer = 0 To dt.Rows.Count - 1
            MsgBox(dt.Rows(i).Item("ad") & " " & dt.Rows(i).Item("soyad") & " adlı müşterinin maaş günü gelmiştir. tepesine bin.")
        Next
    End Sub
End Class

Ekran Görüntüsü

Public Class urunler
    Dim vt As New veritabani
    Dim secilen As String
    Private Sub urunler_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        DataGridView1.DataSource = vt.VeriGoster("select * from urunler")
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim sql As String = "insert into urunler (barkod,urunadi,adet,tur,alisF,satisF) values('" & TextBox1.Text & "','" & TextBox2.Text & "'," & Val(TextBox3.Text) & ",'" & TextBox4.Text & "'," & vt.ParaDonustur(TextBox5.Text) & "," & vt.ParaDonustur(TextBox6.Text) & ")"
        vt.Calistir(sql)
        DataGridView1.DataSource = vt.VeriGoster("select * from urunler")
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim sql As String = "update urunler set barkod='" & TextBox12.Text & "',urunadi='" & TextBox11.Text & "',adet=" & Val(TextBox10.Text) & ",tur='" & TextBox9.Text & "',alisF=" & vt.ParaDonustur(TextBox8.Text) & ",satisF=" & vt.ParaDonustur(TextBox7.Text) & " where sira=" & secilen
        vt.Calistir(sql)
        sql = "select * from urunler"
        DataGridView1.DataSource = vt.VeriGoster(sql)

    End Sub

    Private Sub DataGridView1_RowEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.RowEnter
        secilen = DataGridView1.Rows(e.RowIndex).Cells(0).Value
        TextBox12.Text = DataGridView1.Rows(e.RowIndex).Cells(1).Value
        TextBox11.Text = DataGridView1.Rows(e.RowIndex).Cells(2).Value
        TextBox10.Text = DataGridView1.Rows(e.RowIndex).Cells(3).Value
        TextBox9.Text = DataGridView1.Rows(e.RowIndex).Cells(4).Value
        TextBox8.Text = DataGridView1.Rows(e.RowIndex).Cells(5).Value
        TextBox7.Text = DataGridView1.Rows(e.RowIndex).Cells(6).Value

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Dim sql As String = "delete from urunler where sira=" & secilen & ""
        vt.Calistir(sql)
        sql = "select * from urunler"
        DataGridView1.DataSource = vt.VeriGoster(sql)
    End Sub

    Private Sub TextBox13_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox13.TextChanged
        Dim hangisi As String = ""
        If RadioButton1.Checked Then
            hangisi = "barkod"
        ElseIf RadioButton2.Checked Then
            hangisi = "urunadi"
        ElseIf RadioButton3.Checked Then
            hangisi = "tur"
        End If

        Dim sql As String = "select * from urunler where " & hangisi & " like '%" & TextBox13.Text & "%'"
        DataGridView1.DataSource = vt.VeriGoster(sql)
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Dim sql As String = "update urunler set adet=" & Val(TextBox10.Text) + Val(TextBox14.Text) & " where sira=" & secilen & ""
        vt.Calistir(sql)
        sql = "select * from urunler"
        DataGridView1.DataSource = vt.VeriGoster(sql)
    End Sub
End Class

Ekran Görüntüsü

Public Class musteriler
    Dim vt As New veritabani
    Dim secMusteri As Integer
    Private Sub musteriler_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        DataGridView1.DataSource = vt.VeriGoster("select * from musteri")
    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Dim sql As String = "select * from musteri where ad like '%" & TextBox1.Text & "%'"
        DataGridView1.DataSource = vt.VeriGoster(sql)
    End Sub

    Private Sub DataGridView1_RowEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.RowEnter
        secMusteri = DataGridView1.Rows(e.RowIndex).Cells(0).Value
        Dim sql As String = "select * from rapor where veresiye=true and sira=" & secMusteri
        Dim dtRapor As DataTable = vt.VeriGoster(sql)
        DataGridView2.DataSource = dtRapor

        Dim toplamBorc As Decimal = 0
        For i As Integer = 0 To dtRapor.Rows.Count - 1
            toplamBorc += dtRapor.Rows(i).Item("Adet") * dtRapor.Rows(i).Item("Fiyat")
        Next
        Label3.Text = toplamBorc
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim sql As String = "update rapor set veresiye=false where veresiye=true and sira=" & secMusteri
        vt.Calistir(sql)
        sql = "select * from rapor where veresiye=true and sira=" & secMusteri
        DataGridView2.DataSource = vt.VeriGoster(sql)

    End Sub
End Class

Ekran Görüntüsü

Public Class satis
    Dim vt As New veritabani
    Dim dtUrunler As DataTable
    Dim secMusteri As Integer

    Private Sub satis_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim sql As String = "select * from urunler"
        dtUrunler = vt.VeriGoster(sql)
        sql = "select sira as Sıra,ad as Ad,soyad as Soyad from musteri"
        DataGridView1.DataSource = vt.VeriGoster(sql)

        sql = "select * from rapor"
        DataGridView2.DataSource = vt.VeriGoster(sql)
    End Sub

    Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress
        If (e.KeyChar = Chr(Keys.Enter)) Then
            Dim barkod As String = TextBox2.Text

            Dim sql As String = "select * from urunler where barkod='" & barkod & "'"
            dtUrunler = vt.VeriGoster(sql)

            If dtUrunler.Rows.Count > 0 Then
                Dim satisF As Decimal = dtUrunler.Rows(0).Item("satisF")
                Dim adet As Integer = dtUrunler.Rows(0).Item("adet")
                Label3.Text = satisF * Val(TextBox1.Text)
                Dim kalan As Integer = adet - Val(TextBox1.Text)
                Dim secUrun As Integer = dtUrunler.Rows(0).Item("sira")
                If kalan < 0 Then
                    MsgBox("stokta o kadar ürün yok. olmaz")
                Else
                    If kalan <= 50 Then
                        MsgBox("dikkat " & dtUrunler.Rows(0).Item("urunadi") & " isimli ürün tükenmek üzere. lütfen toptancı memedi arayın.")
                    End If

                    'satış işlemleri
                    sql = "update urunler set adet=" & kalan & " where barkod='" & barkod & "'"
                    vt.Calistir(sql)

                    sql = "insert into satis (mSira,uSira,adet,satisF,tarih,kime,veresiyemi) values(" & secMusteri & "," & secUrun & "," & Val(TextBox1.Text) & "," & vt.ParaDonustur(satisF) & ",#" & vt.TarihDonustur(Now) & "#,'" & TextBox4.Text & "'," & CheckBox1.Checked & ")"
                    vt.Calistir(sql)
                    sql = "select * from rapor"
                    DataGridView2.DataSource = vt.VeriGoster(sql)
                End If

            End If
        End If

    End Sub

    Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged
        Dim sql As String = "select sira as Sıra,ad as Ad,soyad as Soyad from musteri where ad like '%" & TextBox3.Text & "%'"
        DataGridView1.DataSource = vt.VeriGoster(sql)
    End Sub

    Private Sub DataGridView1_RowEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.RowEnter
        secMusteri = DataGridView1.Rows(e.RowIndex).Cells(0).Value
    End Sub
End Class
Imports System.Data.OleDb
Public Class veritabani
    Public baglanti As New OleDbConnection("Provider=Microsoft.Jet.oledb.4.0;Data Source=tukan.mdb")
    Public Function VeriGoster(ByVal sql As String) As DataTable
        Dim adaptor As New OleDbDataAdapter(sql, baglanti)
        Dim dt As New DataTable
        adaptor.Fill(dt)
        baglanti.Close()
        Return dt
    End Function

    Public Sub Calistir(ByVal sql As String)
        Dim komut As New OleDbCommand(sql, baglanti)
        baglanti.Open()
        komut.ExecuteNonQuery()
        baglanti.Close()
    End Sub

    Public Function ParaDonustur(ByVal para As String) As String
        Dim yeniHali As String = Replace(para, ",", ".")
        If (IsNumeric(yeniHali)) Then
            Return yeniHali
        Else
            Return "hata"
        End If
    End Function

    Public Function TarihDonustur(ByVal tarih As Date) As String
        Dim yeni As String = tarih.Month & "/" & tarih.Day & "/" & tarih.Year
        Return yeni
    End Function

End Class

Veritabani Class'ı  

Ekran Görüntüsü (veritabanı - tablolar)

Ekran Görüntüsü (veritabanı - sorgular)

SELECT musteri.sira, musteri.ad AS Ad, musteri.soyad AS Soyad, urunler.urunadi AS ÜrünAdı, satis.adet AS Adet, satis.satisF AS Fiyat, satis.tarih AS Tarih, satis.kime AS Şahıs, satis.veresiyemi AS veresiye
FROM urunler INNER JOIN (musteri INNER JOIN satis ON musteri.sira = satis.mSira) ON urunler.sira = satis.uSira;

Konu 35: dataset ornegi modul kullanimi,tarih aralığı arama

Örnek Uygulama

Ekran Görüntüsü

Public Class Form1
    Dim secilen As Integer
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        baglanti = New OleDb.OleDbConnection("Provider=Microsoft.Jet.oledb.4.0;Data Source=" & Application.StartupPath & "\veritabani.mdb;")

        DataGridView1.DataSource = verigoster("select * from alacak_defteri")

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim sql As String = "insert into alacak_defteri(ad,soyad,borc,tarih) values('" & TextBox1.Text & "','" & TextBox2.Text & "'," & Val(TextBox3.Text) & ",'" & DateTimePicker1.Value.Date & "')"
        calistir(sql)

        DataGridView1.DataSource = verigoster("select * from alacak_defteri")
    End Sub

    Private Sub DataGridView1_RowEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.RowEnter
        secilen = DataGridView1.Rows(e.RowIndex).Cells(0).Value
        Label1.Text = DataGridView1.Rows(e.RowIndex).Cells(0).Value
        Label2.Text = DataGridView1.Rows(e.RowIndex).Cells(1).Value
        Label3.Text = DataGridView1.Rows(e.RowIndex).Cells(2).Value
        Label4.Text = DataGridView1.Rows(e.RowIndex).Cells(3).Value
        Label5.Text = DataGridView1.Rows(e.RowIndex).Cells(4).Value
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim sql As String = "update alacak_defteri set ad='" & TextBox4.Text & "', soyad='" & TextBox5.Text & "', borc=" & TextBox6.Text & ", tarih='" & DateTimePicker2.Value.Date & "' where sira=" & secilen
        calistir(sql)

        DataGridView1.DataSource = verigoster("select * from alacak_defteri")

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Dim sql As String = "delete from alacak_defteri where sira=" & secilen
        calistir(sql)

        DataGridView1.DataSource = verigoster("select * from alacak_defteri")
    End Sub

    Private Sub TextBox7_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox7.TextChanged, TextBox8.TextChanged, TextBox9.TextChanged
        Dim alan As String = ""

        If sender.name = "TextBox7" Then
            alan = "ad"
        ElseIf sender.name = "TextBox8" Then
            alan = "soyad"
        End If

        Dim sql As String = "select * from alacak_defteri where " & alan & " like '%" & TextBox7.Text & "%'"

        If sender.name = "TextBox9" Then
            If TextBox9.Text = "" Then
                sql = "select * from alacak_defteri"
            Else
                sql = "select * from alacak_defteri where borc=" & Val(TextBox9.Text)
            End If
        End If

        DataGridView1.DataSource = verigoster(sql)
    End Sub

    Private Sub DateTimePicker3_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker3.ValueChanged, DateTimePicker4.ValueChanged

        Dim tarih1 As Date = DateTimePicker3.Value.Date
        Dim tarih2 As Date = DateTimePicker4.Value.Date
        Dim sql As String = "SELECT * FROM(alacak_defteri) WHERE (((alacak_defteri.tarih) Between #" & tarih1.Month & "/" & tarih1.Day & "/" & tarih1.Year & "# And #" & tarih2.Month & "/" & tarih2.Day & "/" & tarih2.Year & "#));"

        DataGridView1.DataSource = verigoster(sql)
    End Sub
End Class
Imports System.Data.OleDb
Module Module1
    Public baglanti As OleDbConnection

    Public Function verigoster(ByVal sql As String) As DataTable
        Dim adaptor As New OleDbDataAdapter(sql, baglanti)
        baglanti.Close()
        Dim dt As New DataTable
        adaptor.Fill(dt)
        Return dt
    End Function

    Public Sub calistir(ByVal sql As String)
        Dim komut As New OleDbCommand(sql, baglanti)
        baglanti.Open()
        komut.ExecuteNonQuery()
        baglanti.Close()
    End Sub

End Module

Konu 34: sql veritabanı, click_once ile projenin publish edilmesi

Örnek Uygulama

Ekran Görüntüsü

 

Imports System.Data.SqlClient

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim vt_yeni As String = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
        Dim yeni_yol As String = System.IO.Path.Combine(vt_yeni, "rehber.mdf")
        Dim eski As String = System.IO.Path.Combine(System.Windows.Forms.Application.StartupPath, "rehber.mdf")

        If Not System.IO.File.Exists(yeni_yol) Then
            System.IO.File.Copy(eski, yeni_yol)
        End If

        Dim cumle As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=" & yeni_yol & ";Integrated Security=True;User Instance=True"
        Dim baglanti As New SqlConnection(cumle)
        Dim sql As String = "select * from kisiler"
        Dim adaptor As New SqlDataAdapter(sql, baglanti)
        Dim ds As New DataSet
        adaptor.Fill(ds, "kisiler")
        baglanti.Close()
        DataGridView1.DataSource = ds.Tables("kisiler")

    End Sub

End Class

Ekran Görüntüsü (veritabanı)