19 Mart 2015 Perşembe

Database ve SQLite


Merhaba arkadaşlar, bu makalemde database ve SQLite hakkında bilgiler bulunmaktadır. Database kavramı, veri tabanı olarak adlandırılır. Verilerin belirli bir kural ve düzene göre depolandığı sistemlerdir. Bilgilerin düzenli bir şekilde saklanmasını ve ihtiyaç duyulduğunda kolayca ulaşılmasını sağlayan sistemlerdir aynı zamanda. Günümüzde birçok firmada kullanılan yazılımsal sistemlerin arkasında veriyi saklamak adına bir veri tabanı sistemi bulunmaktadır.

Örneğin; hastaneler, nüfus müdürlükleri, bankalar, okullar, üniversiteler vs. birçok firma tarafında kullanılıyor olup saniyeler içerisinde istediğimiz bilgilere ulaşabiliyorsak bu veri tabanı sistemlerinin sayesindedir.


          Veri tabanlarında veriler, satır ve sütunlardan oluşan tablolarda tutulmaktadır. Verilerin saklanabilmesi için aşağıdaki aşamalardan geçiyor olmak gerekir.

  1. Tablo oluşturma
  2. Tablolar içerisinde saklamak istediğimiz kolonlar ve türleri belirlenir.

Örneğin çalışanların tutulacağı veri tabanı sisteminde içerisinde kişi bilgilerinin tutulması  öncelikle tablo oluşur. "Kisi Tablosu" oluşturulur. Tam bu sırada kendimize sormamız gereken kişinin hangi özellikleri vardır ve biz sistemimizde hangi özellikleri tutmak istiyoruz olmalıdır. Sorulara verdiğimiz cevaplar aslında tabloda bulunması gereken alanlardır. Eğer alanları belirlediysek bunların tablo ortamında saklanırken uygun tiplerinin de belirtiliyor olması gerekmektedir.

Kisi tablosu kendi içerisinde kayıtların birbirinden farklı olduğunu belli etmek amacıyla Id kolonları içermelidir. Kişilerin (Id, Ad, Soyad, Telefon, TcNo) gibi alanlarının tutulması gerekmektedir. Eğer burası da tamamsa artık uygun tipleri belirleyelim. Id kayıtların birbirinden farklı olduğu belli etmek amacıyla yazılmış olan bir kolondur. İçeride sayısal tipten değer tutup bunu da tablo ortamında int olarak belirtmemiz gerekecektir. Ad,Soyad,Telefon ve TcNo kolonlarının veri türü için karakter lerin tutuluyor olması iyi olacaktır. Bu alanların ise karakterlerden oluşan bir yapı olduğunu ve üzerinde matematiksel işlem yapılmadığını biliyorsak böyle bir durumda burayı nvarchar tipinde belirtmemiz iyi olacaktır.

SQLite Nedir?
SQLite kullanımı ve kurulumu oldukça basit olan bir veritabanı kütüphanesidir. SQLite, kaynak kodları açık olan C/C++ programlama dilleriyle geliştirilmiş sunucu yazılımı ve yapılandırma gereksinimi olmayan, işlemsel ve ilişkisel bir SQL veri tabanı motorudur. SQLite'ın çalışması için herhangi bir sunucuya ihtiyacı olmadığı için, kurulum veya konfigürasyon adımları yoktur. Her veri tabanı için sadece bir dosya vardır. Bu da veritabanının yedeklenmesini ve kopyalanmasını kolaylaştırır. Platform bağımsızdır. SQLite, onlarca programlama dili içerisinde rahatlıkla kullanılabilir. Bu şekilde olması bize avantaj sağlamaktadır. SQLite veritabanı çok az ve hatta sıfır yönetim ihtiyacı duyduğundan, insan desteği olmadan çalışması gereken sistemler için güzel bir çözümdür. Bu nedenle cep telefonları, tablet bilgisayarlar vs. sistemler için tercih sebebidir.

SQLite, TEXT (java’da String gibi), INTEGER(java’da long gibi), REAL(java’da double gibi) veri tiplerini destekler. Ayrıca diğer tüm tipler veritabanına kaydedilmeden önce yukarda verilen veri tiplerinden birine çevrilmelidir. SQLite, veritabanına girilen değerlerin tiplerini kontrol etmez. Yani string kolonuna integer ifade girebilirsiniz.

SQLite için istersek komut satırından çalıştırabiliriz. Komut satırı üzerinden çalışmak istemezsek SQLiteStudio programını Bunun için SQLite dosyasını nereye kaydettiysek öncelikle oraya gitmemiz gerekir.  Komut satırında bu dosyanın kaydedilen yoluna gittikten sonra artık sqlite3 yenisim diyerek oluşturabiliriz. Yeniisim veri tabanına vereceğimiz isimdir. Örneğin veritabanımızın ismi deneme olsun bunun için sqlite3 deneme yazıp enter dersek bunu kaydedecektir. Bu komutla birlikte diskte verdiğimiz isimle aynı isimde bir dosya oluşur ve biz veritabanı üzerinde SQL komutları kullanmaya başlayabiliriz. SQL komutları MySQL gibi karmaşık veritabanlarına göre daha basit olsa da SQLite, mobil uygulamalarda karşılaşabileceğimiz her türlü ihtiyacı giderecek kapasiteye sahiptir. Komut satırında sqlite yazısını ve versiyonunu görüyor olacağız böylece artık yeni bir tablo oluşturabiliriz. Kisi isminde bir tablo oluşturmak için komut satırına

create table kisi (id INTEGER PRIMARY KEY AUTOINCREMENT, ad TEXT,soyad TEXT, telefon TEXT, tcNo TEXT);  yazmamız sonucunda yeni bir tablo oluşturacaktır. insert komutu kullanarak bilgi ekleyebiliriz. Tablo oluşturduktan sonra artık kayıt ekleme işlemi yapabiliriz. 

INSERT INTO country VALUES (2,'Turkiye','90');

Tablomuzun içine kayıt ekledik. Artık .quit diyerek çıkabiliriz. Eğer dosyanın içerisine bakarsak görebiliriz.

                SQLite’ı dilersek sqlitebrowser kullanarak da veritabanı oluşturabiliriz. Öncelikle bunun için http://sqlitebrowser.org/ adresine giderek kendi cihazımıza kurulum yapmamız gerekecektir.


                Kendi bilgisayarımıza programı indirdikten sonra artık aşağıdaki gibi bir ekran gelecektir.



















    Bir sonraki makalede DB Browser for SQLite üzerinde veritabanı nasıl geliştirilir bunun hakkında bilgi alabilirsiniz.

     

9 Mart 2015 Pazartesi

JDK ve Eclipse Kurulumu

                Bilgisayarın işletim sistemine bakmak için Bilgisayar'a sağ tıklayıp sonrasında özelliklerine geçip işletim sistemine bakmamız yeterli olacaktır.Açılan özellikler penceresinin içerisinden işletim sisteminin türüne system bölümünden ulaşabiliriz.
               









    İşletim sistemimizin türünü öğrendikten sonra artık JDK indirme aşamasına geçebiliriz. Oracle sitesine girip buradan JDK(Java Development Kit) eklentisini indirmemiz gerekecektir.
               
                Oracle sitesinde Download bölümüne gidip buradan JAVA SE başlığına tıklayalım.












Ardından açılan sayfada JDK Download kısmına tıklayıp indireceğiz. İşletim sistemimize uygun olan JDK’yı indirip kurabiliriz. JDK ile birlikte Development Tools, Source Code ve Public JRE kurulacaktır.













JDK indirip kurma işlemini tamamladıktan sonra Eclipse sitesinden Eclipse paketini indirelim. Eclipse IDE for Java Developers programından işletim sistemimize uygun olanı indirelim.









            Bilgisayarımıza indirdiğimiz sıkıştırılmış dosyayı çıkartıp çalıştırmamız yeterli olacaktır.


Eclipse logosuna tıklayıp açılan bölümde RUN diyerek uygulama geliştirme ortamını çalıştırabiliriz. Projeleri oluşturduğumuzda nereye kaydedilmesini istiyorsak bu kısmı en başta program başlatıldığında belirtiyor olmamız gerekecektir.Bu bölüme workspace ismi de verilmektedir.
















Artık eclipse logosuna tıklayıp açılan bölümde run diyerek uygulama geliştirme ortamını çalıştırabiliriz. Projeleri oluşturduğumuzda nereye kaydedilmesini istiyorsak bu kısmı en başta program başlatıldığında belirtiyor olmamız gerekecektir.Bu bölüme workspace ismi de verilmektedir.


4 Mart 2015 Çarşamba

Java Projesine Kendi Kütüphanemizi Ekleme

         Merhaba arkadaşlar, bu makalede sık kullanmış olduğumuz kodları kütüphane halinde oluşturmayı ve daha sonra bu kütüphaneyi başka bir projemize nasıl dahil edebileceğimiz hakkında bilgi edineceksiniz.

        Öncelikle matematiksel işlemleri yapan bir matematik kütüphanesi oluşturalım. İçerisinde toplama, çıkartma, çarpma, bölme, mod alma, üsalma gibi metodları bulunsun.

        Yeni bir proje açıp içerisine bir tane class ekleyelim. İsmi Matematik Class'ı olsun. Bu Matematik Class'ını başka projelerimize ekleyeceğiz
















































      Şimdi bu Matematik Class'ını JAR olarak kaydetmemiz gerekecektir. Sağ tıklayıp export dememiz gerekecektir.



















       
       
























          Belirtmiş olduğumuz yere verdiğimiz isimle kaydediliyor olacaktır.















       Artık kendi yazmış olduğumuz Matematik Classı'nı JAR haline getirdik ve istersek başka bir projeye import edip kullanabiliriz. Yeni bir proje açıp şimdi bunu içeriye dahil edip çalıştıralım. Projeyi sağ tıklayıp Properties seçeneğinden içeriye Build Path kısmından JAR dosyasını ekleyelim.



     


 















      Add External JARs buttonuna tıklayıp daha önce JAR haline getirdiğimiz dosyayını yolunu göstererek içeriye ekleyelim. JRE System Library altında son eklediğimiz JAR dosyasını da görebiliriz.
 
     
      Package Explorer kısmından bakarsak projenin Referenced Libraries sekmesi altında Matematik kütüphanesini görebiliriz.



      Kütüphaneyi yukarıya import edip artık o kütüphane içerisinde tanımlanmış olanları kullanabiliriz. 

20 Şubat 2015 Cuma

Java Projelerini Import ve Export Etme

Merhabalar arkadaşlar, bu makalemizde Java programlama dili kullanarak eclipse geliştirme ortamında oluşturduğumuz projeyi başka bir bilgisayara taşımak istersek yapmamız gereken projeyi export edip başka bir bilgisayara taşımak olacaktır. Sırayla önce Export ardından da Import işlemlerini inceliyor olacağız.

Öncelikle Eclipse ortamında yeni bir proje oluşturalım ekrana sadece helloworld yazan minik bir uygulama olsun.























Oluşturduğumuz proje içerisine bir src dosyası eklenmiş olarak gelecektir. Buraya bir tane class ekleyelim içerisinde Main metodu barındıran bir class olsun. Main metodu programın başlama noktasıdır. Biz projeyi çalıştırdığımız zaman main içerisinde yukarıdan aşağıya doğru sırasıyla kodlar çalışır. Eklemiş olduğumuz classın içindike main içerisinde kodlar yazalım ve ardından export edelim.

























Programın içerisine ekrana bilgi yazdıran komutlar yazalım. Ardından projemizi Export etme aşamasına gelebiliriz.File menüsü altındaki Export bölümüne tıklayalım.

























Önümüze açılan pencereden General menüsü altındaki Archieve File bölümüne tıklayalım.


























Bir sonraki aşamada ise hangi projeyi export etmek istersek bunu seçelim. Ardından seçtiğimiz projeyi nereye kaydedeceksek orayı belirtelim.






Ardından belirtmiş olduğumuz isimle kaydediyor olacaktır. Şimdi bu paketi başka bir bilgisayarda çalıştırmak istersek bu klasörü eclipse içerisine import ediyor olmamız yeterli olacaktır.
File menüsü altındaki import seçeneğine tıklarız.









 General sekmesi altında bulunan Existing Projects into Workspace dememiz yeterli olacaktır. Select archieve File yazan kısımdan daha önce import ettiğimiz dosyanın yolunu belirtiyor olmamız yeterli olacaktır.

























Select archieve file kısmından dosyayı belirtelim ve ardından finish buttonuna basarak işlemleri bitirebiliriz. Böylece aynı projeyi başka bir bilgisayarda tekrar kullanabiliriz.

Bir sonraki makalede görüşmek dileğiyle...








6 Ocak 2015 Salı

SQL Injection Nedir, Nasıl Korunuruz?



SQL Injection, bilindiği gibi veritabanı bağlantısı olan projelerde bulunan bir yapıdır. Bunu göstermek için bir web projesi üzerinde uygulamasını ve bu yöntemden nasıl korunabiliriz bunu gösteren bir çalışmadır. Asp.net yapısı ile oluşturulan web sayfası Visual Studio kullanılarak C# kodlanarak gerçekleşmiştir. Açık olduğu bizzat test edilip ardından bundan nasıl korunmak için nasıl bir kodlama yapmamız gerektiği üzerinde durulmuştur.


Veritabanımız hazırlanır. Ardından Web Sayfamızın tasarımı hazırlandıktan sonra ilgili kodlamalar yapıldıktan sonra artık SQL Injection nedir nasıl gerçekleştirilir gösteririz. Sonrasında ise bu durumu engellemek adına yapılması gereken kodlamları düzenleriz.

Tablo Oluşturma
SQL Injection üzerine konuşabilmemiz için veritabanı içeren bir uygulama yazmamız gerekmektedir. Bunun için SQL tarafına gidip bir veritabanı oluşturmamız gerekir. Veritabanı oluştururken MSSQL kullanacağız. Veritabanımızın ismi LoginDB olsun ve içerisine Kullanici isminde bir tablo ekleyelim. Tablomuzun içerisinde Id, kullanici ve sifre gibi kolonlarımız bulunsun. İlgili kolonları belirlerken girilecek olan türlere uygun veri tiplerini belirtmemiz gerekecektir. İçerisine birkaç tane kayıt girelim. Kayıt girme işleminde MSSQL ara yüzünü kullanarak kayıt girebileceğimiz gibi direkt olarak SQL sorgu cümleciği olan insert into Kullanici values(değerler) yapısını da kullanabiliriz.







Web Sayfasının Tasarımı
SQL yapısını oluşturduktan sonra Visual Studio kullanarak web sayfamızın tasarımın yapalım. Bunun için sayfamıza iki tane label iki tane textbox ve label ekleyelim. Login olma işlemini denetleyeceğiz. İlgili kontroller koyulduktan sonra istersek bu web formun tasarımı için CSS ekleyebiliriz.














Kullanıcı adını ve şifresini girdiğinde ne iş yapmasını istiyorsak programatik olarak bunu buttonun arkasına kodlamamız gerekir. Bunun için projenin .cs uzantılı dosyasına geçiş yapmamız gerekecektir. Şimdi buttona çift tıklandığında neler olacağını denetleyelim.


Öncelikle veritabanına bağlanacak ve ilgili bilgileri denetleyip böyle bir kullanıcı var mı diyecek bakacak eğer böyle bir kullanıcı varsa sisteme girişi sağlanırken kullanıcının olmaması durumunda hata verip programı kapatacak. Veritabanı ve programı bağlamak adına Ado.Net teknolojisi kullanıyor olacağız. Bunun için aşağıdaki kodlar yazılır.


Kodlara bakıldığında öncelikle bağlantı nesnesi oluşturulur. Bunun data source, database gibi bilgileri verilir. Ardından SqlCommand nesnesi oluşturulup ilgili SQL cümleciği ve bağlantısı belirtilir. Oluşturalan baglanti nesnesi açılır, komut çalıştırılır ve gelen kullanıcıyı kaydetmek adına session kullanılır. Session içerisine o bilgi yani string olarak tablodaki kullanici kolonunda bulunan bilgi atanır.

Başka bir webform hazırlanıp eğer bilgileri doğruysa main.aspx diye bir sayfa yönlendirme yapılır. Kullanıcı Login sayfasında iken kullanıcıAdı ve Sifre kısmına aşağıdaki bilgileri girersek SQL Injection’a maruz kalırız.





Bilgilerinizi yazıp tekrar giriş buttonuna tıklarsa main.aspx olan sayfayı görebilecektir. Görmüş olduğumuz gibi bu sistemde SQL Injection açığı vardır. Burada böyle bir kullanıcı var mı diye bakacak textboxlara girilen değerler doğru olduğu için veritabanı tarafındaki ilk kayıtla girmesi sağlanacaktır. Dolayısıyla tabloda ilk kayıt adminse sisteme admin olarak giriş yapılmış olacağız. Bunu önlemek içinse mümkün olduğunca parametre içeren yapılar verilerek sisteme giriş denetlenirse SQL Injection’dan korunmuş oluruz.



Parametre içeren bir SQL cümleciği yazdığımız için dolayısıyla SQL Injection kullanılamıyor olacaktır. p1 ve p2 parametreleri komut nesnesinin içerisine ayrıca entegre edilmiştir. Dolayısıyla bu açıktan korunmuş oluruz.


24 Aralık 2014 Çarşamba

C# ile VeriTabanına Resim Kaydetme

Merhaba arkadaşlar,veritabanına resim kaydetme işleminden konuşuyor olacağız. Öncelikle visual studio tarafında forma ihtiyacımız vardır.

Yandaki gibi bir form tasarlarsak içerisine 1 tane picturebox, openfiledialog ve 2 tane button ekliyoruz. Picturebox nesnesinin eklenen resmi tam olarak göstermesi için sizemode özelliğini StrecthImage olarak düzenleyelim.


Ekle buttonuna tıklandığı zaman openfiledialog devreye girip dosyayı kaydedeceğimiz kısım açılır. Buttonun altında bu denetimleri yapıyor olmamız gerekecektir.


Öncelikle veritabanımıza bağlanmak için veritabanını oluşturalım. İlgili kolonları ve tiplerini belirtmemiz gerekecektir.


Bir veritabanı ekleyelim. İsmi resimDB olsun. Sonra bir tane table ekleyip hangi kolonlardan oluşacağını belirtmemiz gerekecektir. id ve resim kolonları olsun. Bu kolonların tipleri sırasıyla int ve image tipinden olsun. Bu table yapısını Kullanicilar isminde kaydedelim.

Veritabanı işlemlerini yaptıktan sonra şimdi yapmamız gereken bu iki programı bağlamak olacaktır. Bunun için öncelikle bağlantı nesnemizi oluşturmamız gerekecek. Diğer metotlar üzerinden de erişilebilmesi için metotların dışına bağlantı nesnesini tanımlayalım.






Ekle buttonunun altına aşağıdaki kodları yazmamız gerekecektir.










openFileDialog penceresi açıldığında başlığında Resim Aç yazıyor olacak. openfiledialog.filter=burada ise hangi tipten dosyaların kaydedileceğini seçeriz. Eğer buradan Ok butonu seçilirse picturebox kısmında burada seçilen resmin görünmesini sağlayacağız.

Resmi veritabanına kaydetme kısmında ise şunları yapıyor olmamız gerekecektir.


Bağlantı nesnemizi oluştururken data source=. dediğimiz kısım üzerinde çalıştığımızbilgisayarı ifade etmektedir. database=resimDB oluşturmuş olduğumuz veritabanının adını göstermektedir.




















Ve son aşamada programı test edelim.

Ekle buttonuna tıkladığımızda resim eklememiz için Resim Aç başlığı ile penceremiz açıldı. Resimi seçip Open tuşuna basarsak picturebox tarafında resim görünüyor olacaktır.







Yan tarafta görüldüğü üzere picturebox tarafında resim eklendi. Şimdi Kaydet buttonuna tıklayıp kaydetme kısmına bakalım.










Kaydet buttonuna tıklayalım.

Program bize mesaj verdi. Veritabanına kayıt yapıldı şeklinde belirtti. Şimdi de veritabanına gidip kaydetmiş mi diye kontrol edelim.







Veritabanından kontrol edersek resmi veritabanına kaydetmiş olduk.





Bir sonraki makalede görüşmek üzere...
İyi Çalışmalar. Kolay Gelsin.

3 Aralık 2014 Çarşamba

Appinventor Projesinde Farklı Ekranlara Geçiş

Merhaba arkadaşlar, appinventor ile uygulama geliştirirken ekranlar arası geçiş hakkında yazıyor olacağım. Öncelikle başlangıç ekranına bir tane button koyalım ve buttona tıklandığında yeni bir ekran açılsın. Bunu için öncelikle bir screen ekleyelim.













Uygulamaya screen eklemek için yukarıdaki menüden Add Screen kısmını seçmemiz gerekecektir. Daha sonra name kısmını belirleyip OK dersek uygulamaya bir tane ekran eklenecektir. Hangi ekrana geçmek istersek Screen1 yazan combobox yapısını tıklayıp oluşturmuş olduğumuz yeni sayfayı görebiliriz.

Daha sonrasında Screen1 bölümüne buton koyalım ve buton koyduktan sonra sağ üst köşeden blocks kısmına geçerek kodları oluşturmaya başlayalım. Buttona tıklandığında bir işin gerçekleşmesini istiyoruz ve bu iş yeni bir ekrana geçiş yapmaktır.






Eklemiş olduğumuz button nesnesi clicklendiği zaman yeni bir ekran açmasını istiyoruz. Diğer programlama dillerindeki metotları düşünerek bu kısmı anlamamız daha kolay olacaktır. Open another screen kısmını metot olarak düşünelim ve bu metodun çalışması için parametre olarak string ifade alması gerekir. Alacağı parametre ise az önce yeni eklemiş olduğumuz screen nesnesinin name bilgisin olmalıdır. Ekranın name bilgisini parametre olarak verirsek işlem tamamlanmış olacaktır.

Kolay gelsin arkadaşlar. Bir sonraki makalede görüşmek dileğiyle...

Session Nedir? Neden İhtiyacım Var?

HTTP nedir? HTTP, yani Hypertext Transfer Protocol , web tarayıcıları ile web sunucuları arasında veri alışverişini sağlayan internetin t...