PostgreSQL ve C# kaydetme, silme, veritabanına bağlanma işlemleri

Merhabalar,

Bu makalemde geçen hafta yaptığım bir uygulama için PostgreSQL veritabanı ile olan Viual Studio ilişkisini C# yardımı ile yazdığım kodları paylaşıyor olacağım.

Veritabanına Bağlanma

Bağlan butonunun adı Button5’tir.

private void button5_Click(object sender, EventArgs e)
        {
            dSet.Clear();

            try
            {
                string sunucu, port, kullaniciAdi, sifre, veritabani;

                sunucu = "localhost";
                port = "5432";
                kullaniciAdi = "postgres";
                sifre = "1234";
                veritabani = "postgres";

                string baglantiMetni = string.Format("Server={0};Port={1};User Id={2};Password={3};Database={4};",
                    sunucu, port, kullaniciAdi, sifre, veritabani);

                NpgsqlConnection baglanti = new NpgsqlConnection(baglantiMetni);

                baglanti.Open();

                string sql = "SELECT * FROM musteri_bilgileri";
                NpgsqlDataAdapter dAdapter = new NpgsqlDataAdapter(sql, baglanti);
                dAdapter.Fill(dSet);
                dTable = dSet.Tables[0];
                dataGridView1.DataSource = dTable;

                baglanti.Close();
            }
            catch (Exception hata)
            {
                MessageBox.Show(hata.Message, "Hata");
            }
        }

Veritabanına Kaydetme

Kaydet butonunu adı Button1’dir.

private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                string sunucu, port, kullaniciAdi, sifre, veritabani;

                sunucu = "localhost";
                port = "5432";
                kullaniciAdi = "postgres";
                sifre = "1234"; 
                veritabani = "postgres";

                string baglantiMetni = string.Format("Server={0};Port={1};User Id={2};Password={3};Database={4};",
                    sunucu, port, kullaniciAdi, sifre, veritabani);

                NpgsqlConnection baglanti = new NpgsqlConnection(baglantiMetni);

                baglanti.Open();

                string sql = "INSERT INTO musteri_bilgileri (ad_soyad,telefon,email,meslek,yas,cinsiyet,sehir) VALUES ('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "','" + textBox6.Text + "','" + textBox7.Text + "')";

                NpgsqlDataAdapter dAdapter = new NpgsqlDataAdapter(sql, baglanti);
                dAdapter.Fill(dSet);
                dTable = dSet.Tables[0];
                dataGridView1.DataSource = dTable;

                baglanti.Close();
            }
            catch (Exception hata)
            {
                MessageBox.Show(hata.Message, "Hata");
            }
        }

Veritabanından Silme

Button3 silme tuşudur.

public static void sil(string kimlik)
        {
            string sunucu, port, kullaniciAdi, sifre, veritabani;

            sunucu = "localhost";
            port = "5432"; 
            kullaniciAdi = "postgres";
            sifre = "m";
            veritabani = "postgres";

            string baglantiMetni = string.Format("Server={0};Port={1};User Id={2};Password={3};Database={4};",
                sunucu, port, kullaniciAdi, sifre, veritabani);

            NpgsqlConnection baglanti = new NpgsqlConnection(baglantiMetni);

            try
            {
                NpgsqlCommand command = new NpgsqlCommand("DELETE FROM musteri_bilgileri WHERE id ='" + kimlik + "'", baglanti);
                baglanti.Open();
                command.ExecuteNonQuery();
            }
            catch (Exception hata)
            {
                MessageBox.Show(hata.Message);
            }
            finally
            {
                baglanti.Close();
            }
        }

private void button3_Click(object sender, EventArgs e)
        {

            string kimlik = dataGridView1.CurrentRow.Cells[0].Value.ToString();
            if (!string.IsNullOrEmpty(kimlik))
            {
                Musteri_Paneli.Form1.sil(kimlik);
            }
        }

Renkli günler…

PostgreSQL veritabanında otomatik artan ID atama

Merhabalar,

Bu yazıda sizlere PostgreSQL üzerinde bir veritabanı oluşturup, verilere otomatik ID atama işlemini gerçekleştirmekten bahsediyor olacağım.
PostgreSQL kullanarak bir veritabanı oluşturmak istiyoruz. Veritabanımızda da çoğu zaman yapılan ve yapacağımız işlemlerde kolaylık sağlayan her veriye bir ID atamak ve bu ID’ler üzerinden çalışmak istiyoruz. ID numaralarını yaptığımız uygulamada her zaman elle girmek hem hatalara hem de zaman kaybına yol açar. Bu yüzden her kayıt için otomatik bir ID numarası olmasını istiyoruz.
Bunun için yüklediğimiz PostgreSQL’de pgAdmin arayüzünü çalıştıralım. Önceden oluşturduğumuz veritabanımıza bağlanalım. Plugins menüsünden PSQL Console uygulamasını çalıştıralım. Benim database-imin adı “newdb” olduğundan aşağıdaki görüntü karşıma geldi.

 

Capture

Bu çalışmada yonetici adlı bir table ve bu table içine de yon_id, yon_adsoyad ve yon_email adlı 3 sütun oluşturacağım.

Veritabanımızın adını doğru gördüysek aşağıdaki kodu yazalım.

newdb=#CREATE SEQUENCE yon_id_seq;
CREATE SEQUENCE

Burada primary key olacak yon_id sütunumuz için sequence ifadesini yani düzenli artma özelliğine sahip nesnemizi atıyoruz.

Şimdi tablomuzu oluşturalım.

nexdb=#CREATE TABLE yonetici(
yon_id INTEGER PRIMARY KEY DEFAULT NEXTVAL('yon_id_seq'),
yon_adsoyad VARCHAR(50),
yon_email VARCHAR(50));
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "yonetici_pkey" for table "yonetici"
CREATE TABLE

yon_id isimli sütunumuza ilk satırda göreceğiniz gibi yon_id_seq isimli düzenli artma özelliğine sahip sequence-imizi bağladık.

Artık verilerimizi girme vakti geldi.

newdb=# INSERT INTO yonetici (yon_adsoyad, yon_email) VALUES('ali nazik', 'alinazik@kebap.com');
INSERT 0 1
newdb=# INSERT INTO yonetici(yon_adsoyad, yon_email) VALUES('hanim eli', 'hanim@eli.com');
INSERT 0 1

Eklediğimiz verileri ve otomatik atanan ID değerlerimizi görelim;

newdb=# select * from yonetici;
 yon_id | yon_adsoyad  |   yon_email
--------+-----------+---------------
      1 | ali nazik | alinazik@kebap.com
      2 | hanim eli | hanim@eli.com
(2 rows)

newdb=#

İşlem tamamdır.

Renkli günler…

TIOBE Programming Community Index for January 2012

2011 TIOBE birincisi Objective – C oldu. iPad ve iPhone gecen seneye damgasini vurdu. Ee dolayisiyla da Objective – C. Bu ayki tabloda C#’in yukselisi direkt gozume takildi. Demek ki Microsoft’un reklam, egitim ve yazilim atagi ise yaramis. Su anda C ile ugrastigim icin konumumu koruyorum diyebilirim. 🙂 Ama Python’un dusmesine uzulenlerdenim. Liste asagidaki gibi,

Renkli gunler…

Position
Jan 2012
Position
Jan 2011
Delta in Position Programming Language Ratings
Jan 2012
Delta
Jan 2011
Status
1 1 Java 17.479% -0.29%   A
2 2 C 16.976% +1.15%   A
3 6 C# 8.781% +2.55%   A
4 3 C++ 8.063% -0.72%   A
5 8 Objective-C 6.919% +3.91%   A
6 4 PHP 5.710% -2.13%   A
7 7 (Visual) Basic 4.531% -1.34%   A
8 5 Python 3.218% -3.05%   A
9 9 Perl 2.773% -0.08%   A
10 11 JavaScript 2.322% +0.73%   A
11 12 Delphi/Object Pascal 1.576% +0.29%   A
12 10 Ruby 1.441% -0.34%   A
13 13 Lisp 1.111% +0.00%   A
14 14 Pascal 0.798% -0.12%   A
15 17 Transact-SQL 0.772% +0.01%   A
16 24 PL/SQL 0.709% +0.15%   A
17 20 Ada 0.634% -0.05%   B
18 39 Logo 0.632% +0.29%   B
19 25 R 0.609% +0.07%   B
20 21 Lua 0.559% -0.08%   B