27 Mart 2013 Çarşamba

Veritabanı - 6... Verileri Kaydetme ve Silme...

Şimdi sıra kayıt ekleme ve silme komutlarına geldi... Komut kullanımları olarak daha kolaydır... Kayıt ekleme işleminde veri tiplerine dikkat etmemiz şart... Sayı olan yere metin kaydetmek istediğiniz anda otomatik olarak hata verir... Hatta sayı tanımlamalarınız da virgüllü ifadeler sorun çıkartabilir... Bunu engelleyecek bir yöntem var.. .Parametre kullanımı... İleri ki örneklerde göreceğiz... 

SQL yapısında kaydetme komutu insert dür... Kullanımı ise aşağıdaki gibidir... 

insert into kimlik (adisoyadi, adres)  values ('Büşra','Üsküdar')

Buradaki örnekte kimlik veritabanında ki tablonun adıdır... 
adisoyadi ve adres ise tablodaki alanların isimleridir... 
Gireceğimiz verileri yine sıralı olarak Büşra ve Üsküdar olarak giriyoruz... Aynı sırayı kullanmak zorundayız... Aynı şekilde kaç tane alan adı belirliyorsak o kadar veri girmek zorundayız... 
Alan adı belirlemek yerine aşağıdaki gibi bir kullanım da yapabiliriz... 

insert into kimlik  values ('Büşra','Üsküdar')

Bu durumda tabloda bulunan bütün alanlara veri girmek zorundayız... 

Kayıt silme işleminde ise bir alana ait olan veriyi bulmamız yeterli... Bu şekilde bütün satırı silebiliriz... Yaptığımız örnekte adisoyadi kısmına göre arama yaptırıp silme işlemini gerçekleştiriyoruz... Kullanımı aşağıdaki gibidir...

Delete From kimlik where adisoyadi=('Büşra')

Buradaki örnekte kimlik veritabanında ki tablonun adıdır... 
adisoyadi alanında Büşra isimli birisi varsa ona ait olan bütün satır silinmektedir... 


Formumuzun ilk hali bu şekilde... Aşağıdaki tasarımı hazırlayınız... 
 

Veritabanımızın tasarım kısmı da bu şekilde olacaktır... Burada numara olmasa da olur... 

Programı çalıştırıp kaydet butonuna bastığımız anda her hangi bir sorun olmaması durumunda aşağıdaki mesajı verip veritabanına kaydetmektedir... 

Veritabanına verinin kaydedilmiş hali aşağıdaki gibidir... 

Veri silmek için ise sadece isim kısmına bakılmaktadır... Büyük küçük harf kontrolü yaptırmadığımız için veri girişinde harflere dikkat edelim... İsmi girip Sil tuşuna basıldığı anda Kayıt Silindi diye mesaj göndermektedir... 

Kayıtın silindiğini de aşağıdan görebilirsiniz... 

Programımızın kodları aşağıdaki gibidir;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace WindowsApplication40
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        OleDbConnection baglan = new OleDbConnection("provider=Microsoft.jet.oledb.4.0; Data Source=kimlik.mdb");
        OleDbCommand komut = new OleDbCommand();
       
        private void button1_Click(object sender, EventArgs e)
        {
            komut.Connection = baglan;
            // Tabii bizim bilgilerimiz textboxlar da olduğu için aşağıdaki gibi komut satırımızı yazıyoruz... 
            komut.CommandText = "insert into kimlik(adisoyadi,adres) values('" + textBox1.Text + "','" + textBox2.Text + "')";
            baglan.Open();
            komut.ExecuteNonQuery();// Veritabanında veri değişikliğinin yapıldığı kısım burasıdır... Bu sebeple bağlantının bu komutdan önce açılıp sonra kapatılması yeterli olacaktır... 
            baglan.Close();
            MessageBox.Show("Kayıt Eklendi");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            komut.Connection = baglan;
            komut.CommandText = "Delete From kimlik where adisoyadi=('" + textBox1.Text + "')";
            baglan.Open();
            komut.ExecuteNonQuery(); // Program bu satırda hata veriyorsa bilinki üsteki sql satırında sıkıntı var demektir...
            baglan.Close();
            MessageBox.Show("Kayıt Silindi");
        }
    }
}



Veritabanı - 5... Direnç Değeri Bulmak...


Form tasarım yandaki gibi olacaktır... 









Çalışması yandaki gibidir... 










 
Hazırlayacağımız veritabanı ise yandaki gibi olacaktır... 














using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb; // Access veri tabanı kullanacağız... OLEDB = Access veritabanı... 

namespace arama_6
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        // İki önemli satır... önce kullanacağımız veritabanını çağırıyoruz... 
        // Sonra da SQL sorgumuzu yapacağımız değişkenimizi tanımlıyoruz... 
        OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=direnc.mdb");
        OleDbCommand komut = new OleDbCommand();
        private void Form1_Load(object sender, EventArgs e)
        {
            baglanti.Open(); // Veritabanı bağlantılarını açıyoruz... 
            komut.CommandText = "Select * From renk"; // Renk isimli tablomuzu çağırıyoruz... 
            komut.Connection = baglanti; // SQL sorgusu ile veritabanımızı ilişkilendiriyoruz... 

            OleDbDataReader oku = komut.ExecuteReader(); // Dönen verileri okumaya başlıyoruz... 

            while (oku.Read()) // Verileri bir while döngüsü ile comboboxlara aktarıyoruz... 
            { // Kısaca renk isimlerini veritabanından alıp comboboxlara aktarıyoruz... 
                comboBox1.Items.Add(oku[1].ToString());
                comboBox2.Items.Add(oku[1].ToString());
                comboBox3.Items.Add(oku[1].ToString());
            }

            oku.Close(); // Bağlantıları kapatıyoruz... 
            baglanti.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // Comboboxtaki renk isimlerinin karşılığındaki sayıları bulmak için gonder isimli metoda verileri gönderiyoruz... 
            int renk1 = gonder(comboBox1.Text);   // Dönen verileri renk1, 2, 3 isimli değişkenlere alıyoruz... 
            int renk2 = gonder(comboBox2.Text);   // Dönen verilerin hepsi renklerin karşılığındaki sayılar olmuş oluyor... 
            int renk3 = gonder(comboBox3.Text);

            // Buradaki işlem ise direnç değerlerini bulmak için... Hesaplama yapılıyor ve sonuç gösteriliyor...  
            double sonuc = (renk1 * 10 + renk2) * Math.Pow(10, renk3);
            label4.Text = label4.Text +" " +sonuc.ToString() + " ohm"; 
        }

    int gonder (string kontrol)
    {
        // Bu metodun amacı seçilen rengin karşılığındaki sayıyı bulmaktır... 
        baglanti.Open();
        // Veritabanında seçilen renge karşılık gelen sayı alınıyor... 
        komut.CommandText = "Select * From renk Where Renk='" + kontrol + "'"; 
        komut.Connection = baglanti;

        OleDbDataReader sec_renk = komut.ExecuteReader();
        sec_renk.Read(); // While kullanımı çoklu veri varsa geçerlidir... Tek veri için bu şekil bir kullanım olabilir... 
        int r1 = Convert.ToInt16(sec_renk[0]); // [0] değerini alıyoruz çünkü ilk hücrede sayılar... 

        sec_renk.Close();
        baglanti.Close();

        return r1;  // Geriye değer döndermiş oluyoruz... Sayı gidiyor... 
    }
    }
}

26 Mart 2013 Salı

55 - While Döngüsü... EBOB Bulma...


EBOB u bulmaya çalışıyoruz... EBOB'u bulurken kullandığımız mantık ise şöyle; 

Öncelikle girilecek olan sayıların sıfırdan büyük girilmesi gerekiyor... Bunu While döngüsünün şartında kontrol ettiriyoruz... 2. aşama da ise en küçük olan sayıyı buluyoruz ve bu sayıdan itibaren 1 e kadar, iki sayımıza da MOD aldırıyoruz... 

İf şartı ile birlikte MOD alma işlemini yaptırmış oluyoruz... Eğer her iki sayımızı da ortak bölen bir sayı varsa onu EBOB ilan ediyoruz ve döngüyü bitirip sonucu gösteriyoruz... 

Programımızın bir hatası var... O da eğer 1 e kadar bölen bir ortak sayı bulamazsak o zaman hata verdirmemiz veya bir mesaj vermemiz gerekiyor... O kısmı da size bırakıyorum... 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            int sayi_1 = Convert.ToInt32(Console.ReadLine());
            int sayi_2 = Convert.ToInt32(Console.ReadLine());
     
            int bolen = sayi_2;  // sayi 2 küçükse en büyük bölen olarak sayi2 alınacak...
            if(sayi_2>sayi_1)    // ama sayi 2 büyükse bu durumda en büyük bölen için sayi 1 kullanılacaktır... 
                 bolen = sayi_1; // eğer her ikisi eşit ise zaten sayi2 olmasında mahsur yoktur... 

            bool bitir = true; // Ebob bulunduğu anda döngüyü bitirmek için kullanıyoruz... 

            // Amaç bu döngüye her koşulda girmek... Onun için girilen sayıların 1 den büyük olması yeterli...
            while ((sayi_1 > 1 || sayi_2 > 1) && bitir==true)  
            {
                if (sayi_1 % bolen == 0 && sayi_2 % bolen == 0) // Sayılarımızın ortak bölenlerini bulmaya çalışıyoruz... 
                {
                    bitir = false; // Ortak bölen bulunduysa döngüyü bitirmek için kullanıyoruz... 
                    Console.WriteLine("obeb = " + bolen); // Sonucu gösteriyoruz... 
                }
                else
                    bolen--; // Sayılarımız büyükten küçüğe doğru kontrol ediliyor... 
            }
            
            Console.ReadKey();
        }
    }
}

54 - While Döngüsü... Girilen Bütün Sayıları, Sıfır Girilinceye Kadar Toplayan Program


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication10
{
    class Program
    {
        static void Main(string[] args)
        {
            //Sıfır girilmediği sürece girilen bütün  sayıları toplayan program? 

            Console.Write("1. Sayıyı Giriniz...:");  //Sayı girişi işlemlerini yaptırıyoruz... 
            int sayi = int.Parse(Console.ReadLine());
            int i = 1; int toplam = 0; 
            while (sayi != 0) // Amacımız sıfır girilmediği sürece sayı girişine devam ettirmek... 
            {
                i++; // Adeti bulmak için kullanacağız... Sayaç İçin değil... 
                // Çünkü sonsuz döngü kurduk... Sadece sıfır girilirse döngüden çıkıyor... 
                Console.Write(i + ". Sayıyı Giriniz...:");
                sayi = int.Parse(Console.ReadLine());
                toplam += sayi; // Sayıları topluyor... 
            }

            Console.WriteLine(); 
            Console.WriteLine("Girilen sayıların adedi = " + i); // Adeti gösteriyoruz... 
            Console.Write("Girilen sayıların toplamı = " + toplam); // Toplamı gösteriyoruz... 
            Console.ReadKey();
        }
    }
}

53 - While Döngüsü... Girilen Sayı Negatif, Pozitif, Sıfır


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication9
{
    class Program
    {
        static void Main(string[] args)
        {
            /* Girilecek olan 10 tane sayıdan
          * a) Negatif olanların ortalamasını
          * b) Pozitif olanların toplamı
          * c) Sıfır olanların sayısını bulacak olan program?
          */
            int neg_ort = 0, neg_adet = 0, poz_toplam = 0, sifir_adet = 0;
            int i = 1;
            while (i <= 10)
            {
                Console.WriteLine(i + ".Sayıyı Gir...");      // 1.sayıyı gir, 2. sayıyı gir şeklinde mesaj verdiriyoruz... 
                int sayi = int.Parse(Console.ReadLine());
                if (sayi < 0)       // Sayı sıfırdan küçükse negatif sayı demektir... Adetini bulduruyoruz...
                {
                    neg_ort += sayi;
                    neg_adet++;
                }
                if (sayi > 0)  // Sayı sıfırdan büyükse pozitif sayı demektir... Ortalamasını bulduruyoruz...
                    poz_toplam = poz_toplam + sayi;

                if (sayi == 0)
                    sifir_adet++; // Sıfır olanların sayısını buluyoruz... 
                i++; // While döngüsünün sayacını bir artırıyoruz... 
            }

            Console.WriteLine("Negatif Olanların Ortalaması =" + (neg_ort/neg_adet).ToString());
            Console.WriteLine("Pozitif Olanların Toplamı = " + (poz_toplam).ToString());
            Console.WriteLine("Sıfır olanların adedi = " + sifir_adet);

            Console.ReadKey();
        }
    }
}

52 - While Döngüsü... Asal Sayı Örneği...


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication11
{
    class Program
    {
        static void Main(string[] args)
        {
            // Girilecek sayının asal olup olmadığını bulacak olan program?

            Console.Write("Sayıyı giriniz:");
            int sayi = int.Parse(Console.ReadLine());
            bool asaldegil = false;  // Bool türünde değişkenler sadece true veya false değeri... 

            if (sayi <= 0) // sıfır veya sıfırdan küçük sayılar asal değildir... Sayının asal olması için pozitif olması gerekir... 
                Console.WriteLine("Asal sayılar sıfırdan küçük olmaz...");
            else
            {
                // Döngümüzü 2 den başlatıp girilen sayıya kadar götürüyoruz... 
                int i = 2;
                while(i < sayi)
                {
                    // Girilen sayıyı kendisine kadar olan bütün sayılara bölüyoruz... 
                    // Bir yerde sıfırı bulduğumuz anda sayının asal olmadığı anlaşılıyor... 
                    if (sayi % i == 0)
                    {
                        asaldegil = true; // sayı asal değilse bu değişkenimizi true yapıyoruz...
                        break; // Döngüde devam eden sayılara bakmamıza gerek yok, çünkü buraya girdiyse asal sayı değildir..
                        // break komutu yazıldığı for döngüsünü sonlandırmak için kullanılır... 
                    }
                    i++;
                }

                if (asaldegil) // İşte burada true false durumu işimize yaramış oluyor... 
                    Console.WriteLine(sayi + " Asal Sayı Değildir..."); // True ise asal sayı değildir... 
                else
                    Console.WriteLine("Asal Sayıdır..."); // false ise asal sayıdır... 

                // Bu arada if(asaldegil) diye yazabiliyoruz... Çünkü bool türündeki değişkenler sadece iki değer alabilir...
                // True veya false... Bu sebeple if şartında asaldegil==true yazmamıza gerek yoktur... 
            }

            Console.ReadLine();
        }
    }
}

51 - While Döngüsü... Girilen Sayı Negatif, Pozitif


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication9
{
    class Program
    {
        static void Main(string[] args)
        {
            // Sıfır girilenene kadar girilen bütün sayıların negatif ve pozitif olarak gösteren program?

            int neg = 0, poz = 0;
            int sayi = 1;  // Sıfır girmediğimiz sürece devam ettireceğimiz için ilk sayı olarak 1 giriyoruz...

            int i = 1; // Girilen sayı adetini gösteriyor...
            while (sayi != 0)  // Sayı sıfır değilse devam ediyor...
            {
                Console.Write(i + ".Sayıyı Gir...");  
                sayi = int.Parse(Console.ReadLine());

                if (sayi < 0)       // Sayı sıfırdan küçükse negatif sayı demektir... 
                    neg++;

                if (sayi > 0)  // Sayı sıfırdan büyükse pozitif sayı demektir... 
                    poz++;

                i++; 
            }

            Console.WriteLine();
            Console.WriteLine("Negatif Olanların Sayısı =" + (neg).ToString());
            Console.WriteLine("Pozitif Olanların Sayısı = " + (poz).ToString());

            Console.ReadKey();
        }
    }
}