C# Veritabanı etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
C# Veritabanı etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

13 Şubat 2014 Perşembe

Veritabanı Ders Uygulamaları - 6

DataGridView içerisinde seçilmiş olan ürünün istediğimiz bilgilerini anında labellar üzerinde gösteren bir veritabanı uygulaması gerçekleştireceğiz... Uygulama sürecinde datagridview in üzerinde verilerin gösterilmesi olayının yanında aynı zamanda datagridview üzerinde seçim yapıldığında olan değişiklikleri de göreceğiz...

1 - Öncelikle bilsay adında aşağıdaki veritabanımızı hazırlıyoruz... Bunun içerisinde stok adında bir tablo oluşturuyoruz...









2 - Bu veritabanımızda kimlik alanı otomatik sayı olarak tanımlanacaktır... Bunun dışında diğer bilgilerin tanımlamaları zaten bellidir...

3 - Kullanacağımız veritabanını bin/debug klasörünün altına yerleştiriyoruz...

4 - Aşağıdaki form tasarımını gerçekleştiriyoruz...

















5 - Sağ taraftaki labelların içeriklerini de silerek her hangi bir şekilde uygulama açıldığında görünmesini engelliyoruz...

6 - Uygulamamız açıldığı zaman otomatik olarak ilk verinin içeriğini sağ tarafta göstermeyecektir. Ondan sonra datagridview üzerinde tıklanan her hangi bir verinin içeriğini de göstermeye başlayacaktır... RowEnter olayını kullansaydık otomatik olarak veriyi gösterecekti...

7 - Kod kısmına geçelim... baglanti ve komut değişkenlerimizi aşağıdaki örneğe benzer şekilde tanımlıyoruz...
OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=okul.mdb");
OleDbCommand komut  = new OleDbCommand();

8 - Aynı zamanda datagridview de kullanacağımız dataset ve dataadapter değişkenlerimizi de tanımlıyoruz...
OleDbDataAdapter da; DataSet ds = new DataSet();

9 - Datagridviewde bilgilerin görünmesini sağlayacak olan bir metod tanımlıyoruz... Bu işlemi yaparken bir metoda sorgu işlemini gönderebileceğimiz bir string türünde bir parametre tanımlıyoruz... Aşağıdaki örneğe benzer bir yapıyı metod içerisinde oluşturuyoruz...
         baglanti.Open();
            komut.CommandText = "Select * From ogrenci Where Adı = 'CPU'";
            komut.Connection = baglanti;

            da = new OleDbDataAdapter(komut);

            da.Fill(ds,"Tablo");
            dataGridView1.DataSource = ds;
            dataGridView1.DataMember = "Tablo";
            baglanti.Close();

10 - Datagridview de değerler gösterilirken görünmesini istemediğimiz bazı alanlar var... Görünmesini istemediğimiz alanların aşağıdakine benzer bir örnekle metod içerisinde gizliyoruz...Kimlik, Kalan ve Dipnot alanlarını gizleyiniz...
dataGridView1.Columns["Ad"].Visible = false;

11 - Form load olayında datagridview i dolduracak olan sql komutunu metoda yolluyoruz... Bu sayede form açıldığı anda veritabanındaki bütün bilgiler datagridview içerisinde dolmuş olacaktır...

12 - Aşağıdaki datagridview olayını aktif hale getiriyoruz... Bundan sonra yazacaklarımızı bu kısmın içerisine yazacağız...
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

13 - Bu olayı kullanmamızdaki amaç tıklamış olduğumuz satıra ait olan kimlik numarasını bulmak... Çünkü kimlik numaralarını otomatik sayı olarak atadık ve hiçbir ürünün kimlik numarası bir diğeri ile aynı değil. Aşağıdaki komutu bu olayın içerisine ekliyoruz... 
kimlik= int.Parse(ds.Tables["Tablo"].Rows[e.RowIndex]["Kimlik"].ToString());

Yine aynı zamanda bilgileri labellar içerisinde görmek için birazdan tanımlayacağımız bilgileri goster metodunu da aşağıdaki gibi burada kullanıyoruz... 
bilgilerigoster(// Buradaki kısma alınan kimlik bilgisine ait veriyi  gönderecek olan bir sorgu yazınız);

14 - bilgilerigoster metodu ise sorguyu alacak olan bir parametre ile birlikte aşağıdakine benzer bir şekilde tanımlanacaktır...
baglanti.Open();
komut.CommandText = sorgu;
komut.Connection = baglanti;
OleDbDataReader oku = komut.ExecuteReader();
while (oku.Read())
            {
              label1.Text = oku["Adı"].ToString();
            }
oku.Close();
baglanti.Close();

15 - Programı çalıştırdığımızda aşağıdaki gibi bir çıktı oluşacaktır. Başlangıçta ekranda her hangi bir bilgi gözükmez iken daha sonra seçim yaparak labelları doldurmuş oluruz...











16 - Bu metod ile birlikte programı çalıştırdığımız zaman problem datagridview deki alan başlıklarına tıkladığımızda oluşan aşağıdaki hatadır.

Bu hatayı çözmek için farklı yöntemler vardır... Biz datagridview deki alan başlıklarının üzerine tıklama olayını cellclick olayına yazacağımız try-catch komutları ile önledik... Hata durumunda mesaj verdirmeden yoluna devam ettirmek için kodları try kısmına yazdık... Catch kısmına ise her hangi bir sıkıntı oluşmadığı için her hangi bir ekleme yapmadık...

17 - Form üzerinde her hangi bir alan başlığına tıklama yapıldığında ve daha sonra seçim yapıldığında da programda başka bir veriyi gösteriyor... Aşağıda görüldüğü gibi....











Bu sıkıntıdan kurtulmak için Form Load olayına aşağıdaki kodları ekledik... Bu sayede alan başlıklarına tıklama olayını ortadan kaldırmış oluyoruz... Tabii farklı yöntemler ile de bu sorun çözülebilirdi...
foreach (DataGridViewColumn x in this.dataGridView1.Columns)
                x.SortMode = DataGridViewColumnSortMode.NotSortable;

Bu haliyle programı bitirmiş olduk... 

15 Aralık 2013 Pazar

Veritabanı - 12... Comboboxdan DataGridViewe Bilgi Getirmek...

Comboboxda yaptığımız tercihler önemlidir... Yaptığımız tercih işlemine göre programda bir şeylerin değişmesini isteriz... Hatta veritabanından bazı bilgilerin gelmesi veya veritabanına bilgi kaydetmeyi bile isteyebiliriz... Bu program parçasında veritabanın da olan tarih verilerine göre garanti süresi devam eden bilgisayar parçalarını göstereceğiz... Bunun için aşağıdaki veritabanını kullanacağız... 



Veritabanımızın adı bilsay, tablomuzun adı ise Stok olacaktır... 

Burada Alınan Tarih ve Garanti alanları bizim için önemli olacaktır... Alınan Tarih üzerine garanti süresini yıl olarak ekleyeceğiz... Çıkan tarih eğer şu anki tarihden daha büyük ise garanti süresi devam ettiği için datagridview de göstereceğiz... Ama bunu sadece stokta kalan ürünler için göstereceğiz... Bu durumda Kalan alanı = 0 olanlar için garanti süresine bakmayacağız... 

Programımızın Form sayfası aşağıdaki gibi olacaktır... Comboboxın listelerine program açılmadan Hepsi ve Garanti seçeneklerini ekleyelim... 

Program çalıştığı zaman aşağıdaki gibi bir görüntü olacaktır... 

Garanti seçimi yapıldıktan sonra aşağıdaki gibi gözükecektir... 

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.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

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

        OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=bilsay.accdb");
        OleDbCommand komut = new OleDbCommand();
        OleDbDataAdapter da;
        DataSet ds = new DataSet();

        void doldurdatagridview1(string sorgu)
        {
            ds.Clear(); // Datagridview her doldurulduğunda bir önceki veriler gözükmemesi için temizleniyor...

            baglanti.Open();
            komut.CommandText = sorgu;
            komut.Connection = baglanti;

            da = new OleDbDataAdapter(komut);
            da.Fill(ds,"StokTablo"); // Burada kullanılan "StokTablo" ismi datagridview olaylarının hepsinde kullanılır...
            dataGridView1.DataSource = ds;
            dataGridView1.DataMember = "StokTablo";
            dataGridView1.Columns["Kimlik"].Visible = false; // Kimlik alanı datagridviewde gözükmesin...
            dataGridView1.Columns["Kalan"].Visible = false; // Kalan miktarı datagridviewde gözükmesin...
            baglanti.Close();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            doldurdatagridview1("Select * From Stok"); // Veritabanındaki bütün veriler gösteriliyor...
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBox1.Text == "Garanti") // Garanti süresi devam edenler
                doldurdatagridview1("Select *  From Stok Where DateAdd('yyyy',[Garanti],[Alınan Tarih])>Now()  And [Kalan]<>0");
            else if (comboBox1.Text == "Hepsi") // Stokta olan ve olmayan hepsi gözüküyor...
                doldurdatagridview1("Select * From Stok"); 
        }

        private void button4_Click(object sender, EventArgs e)
        {
            Application.Exit(); // Programı tamamen sonlandırmak için kullanılır... 
        }
    }
}

Program kod satırında bazı önemli noktalar vardır. 
*  ds.Clear();
DataGridView içerisini temizleyen komuttur... Çünkü combobox her seçim yapıldığında DataGridView temizlenmelidir... Aksi takdirde veriler üst üste binecek ve hepsi gözükecektir...

*  dataGridView1.Columns["Kimlik"].Visible = false; 
DataGridView içerisinde verintabanın da olan alanlardan göstermek istemediğimiz olursa bu komut satırı ile göstermeyebiliriz... Kimlik alanı ve Kalan alanı veritabanın da olmasına rağmen DataGridView de gösterilmemektedir... 

* doldurdatagridview1("Select *  From Stok Where DateAdd('yyyy',[Garanti],[Alınan Tarih])>Now()  And [Kalan]<>0");
DateAdd komutu verilen tarihin üstüne istenilen kadar tarih eklemektedir... Buradan yyyy ifadesi yerine m veya d ifadesi kullanılırsa yıl yerine, ay veya gün eklenerek yeni tarih bulunabilmektedir... Now() ise bilgisayarın tarihini göstermektedir... Çıkan tarih ile bilgisayarın tarihi kıyaslanmaktadır... 

And ifadesi birden fazla şart olması durumunda kullanılmaktadır... Biz burada Stokta olmayan ürünleri göstermek istemediğimiz için [Kalan]<>0 ifadesini kullanmaktayız... <> ifadesi eşit değil anlamındadır... 

14 Aralık 2013 Cumartesi

Veritabanı - 11... Veritabanından Combobox a Bilgi Almak...

Access veri tabanında kayıtlı olan verilerimizden bazılarını Combobox a ekleyebiliriz... Yapmak istediğimiz uygulamada Access de bulunan sütunlardan bir tanesini tamamen Comboboxa ekleyeceğiz... Aynı zamanda Comboboxdan seçim yapıldığında da Richtextboxa seçime göre diğer sütundaki bilgilerin gelmesini sağlayacağız...  

Access veritabanını aşağıdaki gibi oluşturun... Tablomuzun ismi Yeniurun olacaktır... Veritabanı adımız ise Bilsay olacaktır... 


Aşağıdaki formu oluşturunuz... Formda bir tane Combobox, bir tane Richtextbox olacaktır... 

Kodlarımıza Form_Load olayından başlayacağız... Bu sayede form açıldığında Comboboxa veriler eklenmiş olacaktır... Bu işlemleri yaparken hem comboboxa verilerin çağrılması kısmında hemde richtextboxa verilerin çağrılması kısmında benzer işlemleri kullanacağımız için metod yöntemi ile bilgileri alacağız... 

Program çalıştığı zaman aşağıdaki gibi olacaktır... Comboboxa veritabanındaki bilgiler gelecektir... Comboboxdan seçim yapıldığında ise Richtextboxa bilgiler gelecektir...

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.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;

namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
         OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=bilsay.accdb");
        OleDbCommand komut = new OleDbCommand();

        void veritabanisorgu(int gelenindex, string sorgu) // Metodumuz...
        {
            baglanti.Open();
            komut.CommandText = sorgu;
            komut.Connection = baglanti;

            OleDbDataReader oku = komut.ExecuteReader(); //Aldığımız bilgilerimizi depomuza atıyoruz...

            if (gelenindex==0) // Combobox için 0, Richtextbox için 1 değerini gönderiyoruz... 
            {
                while (oku.Read()) //Comboboxa verileri ekliyor...
                    comboBox1.Items.Add(oku[0].ToString());
            }
            else if (gelenindex==1) // Richtextbox için çalışacak kısım... 
            {
                while (oku.Read()) // Richtextbox a verileri ekliyor... 
                   richTextBox1.Text= oku[1].ToString();
            }
            oku.Close();
            baglanti.Close(); 
        }
        private void Form1_Load(object sender, EventArgs e) // Formun hemen girişinde comboboxa verileri ekliyoruz...
        {  // Metoda gönderirken sorgu ile birlikte bir de sütun numarasını gönderiyoruz... 
            veritabanisorgu(0,"SELECT * FROM Yeniurun");
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        { // comboboxdan seçim yapıldıktan sonra sorguyu gönderiyoruz... 
            veritabanisorgu(1,"SELECT * FROM Yeniurun Where [Adı]='" + comboBox1.Text + "'"); 
        }
    }
}

27 Mart 2013 Çarşamba

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... 
    }
    }
}