C# Class Kullanarak Veritabanı Bağlantısı

sdkbyrm

olwα.ɴeт
Üyelik Tarihi
23 Aralık 2020
Mesajlar
813
Beğeniler
1
Puanı
3
Ticaret: 0 / 0 / 0
Daha önceki yazılarımızda C# ile veritabanı bağlantısının çeşitli yöntemlerini görmüştük. Bu yazımızda yine bir veritabanı bağlantısı gerçekleştireceğiz. Bu örneğimizde Sql veritabanına bağlanıp Ekleme (insert), Silme (Delete) ve Güncelleme (Update) işlemlerini Class (Sınıf) kullanarak gerçekleştireceğiz. Örneğimize geçelim.


Örneğimizde kullanacağımız SQL veritabanı ismi “dbOkul” ve tablonun ismi “Ogrenci” olacak. Sizde istediğiniz bir veritabanı için uyarlama yapabilirsiniz.

Class_3 Class_4

Veritabanı tasarımımızı tamamladıktan sonra Form tasarımını da gerçekleştiriyoruz. Formumuzda verileri listelemek için kullanacağımız 1 adet datagridView kontrolü ve Kayıt Ekleme, Kayıt Silme, Kayıt Güncelleme işlemleri için kullanacağımız Textbox, Label ve Button‘ lar bulunmakta.
Datagridview‘ in SelectionMode özelliğini FullRowSelect olarak ayarlayarak tıklana tüm satırın seçili olmasını sağlayacağız.

Class_tasarim

Şimdi kodlarımıza geçiyoruz. Öncelikle Projemize 2 tane Class (Sınıf) ekliyeceğiz. Class’ larımızın ismi “Kisi” ve “KisiProvider” olacak.

Class_1

Class‘ larımızı ekledikten sonra Solution Explorer penceresi görünümü aşağıdaki gibi olacaktır.

Class_2

Kodlarımız aşağıdaki şekilde olacaktır.

“Kisi.cs” :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

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

namespace SqlClass
{
class Kisi
{
int _no;
public int No
{
get { return _no; }
set { _no = value; }
}


string _adi;
public string Ad
{
get { return _adi; }
set { _adi = value; }
}


string _soyadi;
public string Soyad
{
get { return _soyadi; }
set { _soyadi = value; }
}


string _telefonu;
public string Telefonu
{
get { return _telefonu; }
set { _telefonu = value; }
}
}
}
KisiProvider.cs“:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137

using System;
using System.Collections.Generic;
using System.Data; //Ekle
using System.Data.SqlClient; //Ekle
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SqlClass
{
class KisiProvider
{
SqlConnection con;
SqlCommand cmd;

public KisiProvider() //Kurucu metot
{
Baglan();
}

public void Baglan()
{
con = new SqlConnection("server=.; Initial Catalog=dbokul;Integrated Security=SSPI");
cmd = new SqlCommand();
cmd.Connection = con;
}

public List<Kisi> Listele()
{

try
{
List<Kisi> ogrenciListesi = new List<Kisi>();
cmd.CommandText = "Select *From Ogrenci";
cmd.CommandType = CommandType.Text;
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
Kisi k = new Kisi();
k.No = Convert.ToInt32(reader[0].ToString());
k.Ad = reader[1].ToString();
k.Soyad = reader[2].ToString();
k.Telefonu = reader[3].ToString();
ogrenciListesi.Add(k);
}

return ogrenciListesi;
}
catch
{
throw;
}
finally
{
if(con!=null)
{
con.Close();
}
}
}

public void Ekle (Kisi k)
{
try
{
cmd.CommandText = "Insert Into Ogrenci (numara,ad,soyad,telefon) Values (" + k.No + ",'" + k.Ad + "','" + k.Soyad + "','" + k.Telefonu + "')";
cmd.CommandType = CommandType.Text;
con.Open();
cmd.ExecuteNonQuery();
}
catch (Exception)
{

throw;
}
finally
{
if(con!=null)
{
con.Close();
}
}

}

public void Guncelle(Kisi eskiKisi,Kisi yeniKisi)
{
try
{
cmd.CommandText = "Update Ogrenci SET ad='" + yeniKisi.Ad + "',soyad='" + yeniKisi.Soyad + "',telefon='" + yeniKisi.Telefonu + "' Where numara=" + eskiKisi.No + "";
cmd.CommandType = CommandType.Text;
con.Open();
cmd.ExecuteNonQuery();
}
catch (Exception)
{

throw;
}
finally
{
if (con != null)
{
con.Close();
}
}

}

public void Sil(Kisi k)
{
try
{
cmd.CommandText = "Delete From Ogrenci Where numara="+k.No+"";
cmd.CommandType = CommandType.Text;
con.Open();
cmd.ExecuteNonQuery();
}
catch (Exception)
{

throw;
}
finally
{
if (con != null)
{
con.Close();
}
}
}

}
}
Veritabanı ile ilgili tüm işlemlerimiz bu iki Sınıf kullanılarak yapılmakta. Anaformumuza yani Form1‘e yazacağımız kodlar ise şu şekilde olacaktır.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76

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;

namespace SqlClass
{
public partial class Form1 : Form
{
KisiProvider kp = new KisiProvider();

public Form1()
{
InitializeComponent();
}

void Listele() //Datagrid listeleme işlemi için metot.
{
dataGridView1.DataSource = kp.Listele();
}

private void Form1_Load(object sender, EventArgs e)
{
Listele();
}

private void button1_Click(object sender, EventArgs e) //Ekleme
{
Kisi yenikisi = new Kisi();
yenikisi.No = Convert.ToInt32(textBox1.Text);
yenikisi.Ad = textBox2.Text;
yenikisi.Soyad = textBox3.Text;
yenikisi.Telefonu = textBox4.Text;
kp.Ekle(yenikisi);
Listele();

}

private void button2_Click(object sender, EventArgs e) //Silme
{
Kisi silinecekkisi = new Kisi();
silinecekkisi = (Kisi)dataGridView1.CurrentRow.DataBoundItem;
kp.Sil(silinecekkisi);
Listele();
}

private void button3_Click(object sender, EventArgs e) //Güncelleme
{
Kisi eskikisi = new Kisi();
eskikisi = (Kisi)dataGridView1.CurrentRow.DataBoundItem;
Kisi yenikisi = new Kisi();
yenikisi.Ad = textBox2.Text;
yenikisi.Soyad = textBox3.Text;
yenikisi.Telefonu = textBox4.Text;
kp.Guncelle(eskikisi, yenikisi);
Listele();


}

private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
{//Datagrid tıklanan satırın ilgili Textbox'larda görüntülenmesi.
textBox1.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();
textBox2.Text = dataGridView1.CurrentRow.Cells[1].Value.ToString();
textBox3.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString();
textBox4.Text = dataGridView1.CurrentRow.Cells[3].Value.ToString();
}
}
}
Kodları incelediğimizde Kisi.cs sınıfının kullanılacak veritabanına göre tasarlandığını görüyoruz. KisiProvider sınıfı ise Listeleme, Ekleme, Silme ve Güncelleme işlemlerini gerçekleştiren Class (Sınıfımız).
Class’ larımızı tamamladıktan sonra geriye kalan tek şey bu Class ları kullanmak. Bu işlemleri de Form1.cs tarafında yapıyoruz.
Kodlarımızı tamamlayıp Projemizi çalıştırdığımızda;

Class_Form
 
Üst Alt