C#’da Veritabanı İşlemleri

C#’da Veritabanı İşlemleri

C# veya ASP.net gibi platformlarda Veritabanı işlemleri dediğimiz zaman aklımıza hemen ADO.NET gelmeli. ADO.net .NET platformunun modern Veritabanı sınıf nesnelerine sahip teknolojidir. Bu teknolojinin iki temel sınıfı vardır. Bunlar DataSet Sınıfları ve .NET Veri Sağlayıcı Sınıflarıdır.

DataSet Sınıfları
DataSet sınıfları, çevrımdışı daha çok masaüstü programlamada veri depolama ve yönetme işlemlerini gerçekleştirmek için kullanılır. Özellikle İlişkisel Veritabanı, XML ve XML Webservisleri üzerinden veriçekmek için kullanılır.

.NET Veri Sağlayıcı Sınıfları
Veri sağlayıcı sınıflarsa farklı türdeki veri tabanlarına bağlanmak için kullanılırlar. Bu farklı türdeki veri tabanları SQL Server .NET Veri Sağlayıcısı, OLE DB .NET Veri Sağlayıcısı ve Diğer .NET Veri Sağlayıcı türleri tarafından bağlanabilir.

ADO.NET Veri Sağlayıcıları

 

ado.net_veri_saglayicilari

SQL Server için veritabanı bağlanma kodu


System.Data.SqlClient.SqlConnection baglanti;
baglanti= new System.Data.SqlClient.SqlConnection();
baglanti.ConnectionString= "Data Source=VERİKAYNAĞI;Initial Catalog=VERİTABANIADİ;User ID=USERADİ; Password=ŞİFRE; Connection TimeOut=60";

SQL Server 7.0’dan önceki sürümlerine veritabanı bağlanma kodu


System.Data.OleDB.OleDbConnection baglanti;
baglanti = new System.Data.OleDb.OleDbConnection();
baglanti.ConnectionString="Provider=SQLOLEDB; Data Source=ProdServ; Initial Catalog=Pubs; Integrated security=SSPI";

DİKKAT:Microsoft Access veri kaynağı, tek veri tabanından oluşur. SQL Server verikaynağı ise birden fazla veri tabanından oluşur. Bu yüzden SQL Server veritabanı bağlantıcümlesinde Initial Catalog parametresi kullanılır.

Microsoft Access 2003 sürümü için veritabanı bağlantı kodu (MDB uzantılar için)

System.Data.OleDb.OleDbConnection baglanti;
baglanti= new System.Data.OleDb.OleDbConnection();

baglanti.ConnectionString=@”Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Deneme\Personel.mdb”;

Microsoft Access 2010 sürümü ve üzerisi için veritabanı bağlantı kodu (Accdb uzantılar için)


System.Data.OleDb.OleDbConnection baglanti;
baglanti = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Deneme\personel.accdb");

Veritabanı bağlantısı açmak ve kapamak


baglanti.Open(); // Bağlantıyı açar
baglanti.Close(); // Bağlantıyı kapatar

Veritabanı bağlantı durumunu kontrol etmek


if(baglanti.State==ConnectionState.Closed)
MessageBox.Show("Bağlantı kapalı");
else if (baglanti.State==ConnectionState.Open)
MessageBox.Show("Bağlantı açık");

Örnek bir Access 2010 uygulaması yapalım

 

Kaynak kodlar:

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 _1213BDDers07_01
{
public partial class Form1 : Form
{
public Form1()
{
HSancak Nesne Tabanlı Programlama II Ders Notları
InitializeComponent();
}
OleDbConnection bag= new
OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=C:\Users\HSK\Documents\personel.accdb");
//Form yüklenirken DataGrid dolduruluyor
private void Form1_Load(object sender, EventArgs e)
{
if (bag.State == ConnectionState.Closed)
bag.Open();
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM Tablo1", bag);
da.Fill(dt);
dataGridView1.DataSource = dt;
}
//Listeleme Butonu
private void button1_Click(object sender, EventArgs e)
{
if (bag.State == ConnectionState.Closed)
bag.Open();
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM Tablo1", bag);
da.Fill(dt);
dataGridView1.DataSource = dt;
}
//Ekleme Butonu
private void button2_Click(object sender, EventArgs e)
{
if (bag.State == ConnectionState.Closed)
bag.Open();
OleDbCommand komut = new OleDbCommand("INSERT INTO
Tablo1(ADI,SOYADI,MAAS) VALUES('" + textBox1.Text + "','" + textBox2.Text +
"','" + float.Parse(textBox3.Text) + "')", bag);
komut.ExecuteNonQuery();
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM Tablo1", bag);
da.Fill(dt);
dataGridView1.DataSource = dt;
}
//Silme Butonu
private void button3_Click(object sender, EventArgs e)
{
if (bag.State == ConnectionState.Closed)
bag.Open();
OleDbCommand komut = new OleDbCommand("DELETE FROM Tablo1 WHERE
ADI='"+textBox1.Text+"' AND SOYADI='"+textBox2.Text+"'",bag);
komut.ExecuteNonQuery();
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM Tablo1", bag);
da.Fill(dt);
dataGridView1.DataSource = dt;
HSancak Nesne Tabanlı Programlama II Ders Notları
}
//Güncelleme Butonu
private void button4_Click(object sender, EventArgs e)
{
if (bag.State == ConnectionState.Closed)
bag.Open();
OleDbCommand komut = new OleDbCommand("UPDATE Tablo1 SET MAAS=" +
float.Parse(textBox3.Text) + " WHERE ADI='" + textBox1.Text + "' AND
SOYADI='" + textBox2.Text + "'", bag);
komut.ExecuteNonQuery();
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM Tablo1", bag);
da.Fill(dt);
dataGridView1.DataSource = dt;
}
//Arama Butonu
private void button5_Click(object sender, EventArgs e)
{
if (bag.State == ConnectionState.Closed)
bag.Open();
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM Tablo1 WHERE
ADI='"+textBox1.Text+"'", bag);
da.Fill(dt);
dataGridView1.DataSource = dt;
}
//Form kapanırken bağlantı kapatılıyor
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
bag.Close();
}
//DataGrid ten seçilen satıra ait bilgiler TextBox’ alara aktarılıyor
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
textBox1.Text = dataGridView1.CurrentRow.Cells[1].Value.ToString();
textBox2.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString();
textBox3.Text = dataGridView1.CurrentRow.Cells[3].Value.ToString();
}
//Kayıt eklemenin bir başka yöntemi
//string sorgu = "insert into personnel(Ad, Soyad, PNO, TCNO, Unvan, Bolum,
Cinsiyet, Dogum)
// values
(@ad,@soyad,@pno,@tcno,@unvan,@bolum,@cinsiyet,@dogumtarihi)";
//OleDbCommand cmd= new OleDbCommand(sorgu,baglanti);
//cmd.AddWithValue.Add("@ad",txtad.Text);
//cmd.AddWithValue.Add("@soyad",txtsoyad.Text);
//cmd.AddWithValue.Add("@pno",txtpno.Text);
//... gibi
//bablanti.open();
//cmd.ExecuteNonquery();
//balanti.close();

 

Aynı örneği bu sefer SQL Server için oluşturalım


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.SqlClient;
namespace _1213BDDers08_05
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
SqlConnection bag = new SqlConnection(@"Data Source=HSKPB\SQLEXPRESS;
Initial Catalog=OgrenciVT; Integrated Security=True");
void baglan()
{
if (bag.State == ConnectionState.Closed)
bag.Open();
}
void listele()
{
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Ogrenci", bag);
da.Fill(dt);
dataGridView1.Columns[0].HeaderText = "Öğrenci No";
dataGridView1.Columns[1].HeaderText = "Adı";
dataGridView1.Columns[2].HeaderText = "Soyadı";
dataGridView1.Columns[3].HeaderText = "Bölümü";
dataGridView1.DataSource = dt;
}
HSancak Nesne Tabanlı Programlama II Ders Notları
private void Form1_Load(object sender, EventArgs e)
{
baglan();
listele();
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
}
private void button1_Click(object sender, EventArgs e)
{
baglan();
listele();
}
private void button2_Click(object sender, EventArgs e) // EKLEME
{
baglan();
SqlCommand komut = new SqlCommand();
komut.Connection = bag;
komut.CommandText = "INSERT INTO Ogrenci(OGRNO, ADI, SOYADI, BOLUMU)
VALUES ('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text
+ "','" + textBox4.Text + "')";
komut.ExecuteNonQuery();
listele();
bag.Close();
}
private void button3_Click(object sender, EventArgs e) // GÜNCELLEME
{
baglan();
SqlCommand komut = new SqlCommand();
komut.Connection = bag;
komut.CommandText = "UPDATE Ogrenci SET ADI='" + textBox2.Text + "',
SOYADI='" + textBox3.Text + "', BOLUMU='" + textBox4.Text + "' WHERE
OGRNO='" + textBox1.Text + "'";
komut.ExecuteNonQuery();
listele();
bag.Close();
}
private void button4_Click(object sender, EventArgs e) // SİLME
{
baglan();
SqlCommand komut = new SqlCommand();
komut.Connection = bag;
komut.CommandText = "DELETE FROM Ogrenci WHERE OGRNO='" + textBox1.Text
+ "'";
DialogResult s;
s = MessageBox.Show(textBox1.Text + " Numaralı Öğrenci Silinsinmi",
"Silme İşlemi", MessageBoxButtons.YesNo);
if (s == DialogResult.Yes)
{
if (komut.ExecuteNonQuery() >= 1)
HSancak Nesne Tabanlı Programlama II Ders Notları
{
listele();
MessageBox.Show("Kayıt Silindi");
}
else
MessageBox.Show(textBox1.Text + " Numaralı Öğrenci Sistemde
Kayıtlı Değil!!!");
}
else
MessageBox.Show("Kayıt Silinmedi");
bag.Close();
}
private void button5_Click(object sender, EventArgs e) // ARAMA
{
baglan();
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Ogrenci WHERE
OGRNO='" + textBox1.Text + "'", bag);
da.Fill(dt);
dataGridView1.DataSource = dt;
bag.Close();
}
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
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();
}
}
}

 

Directory sınıfı

Directory sınıfı

Directory sınıfının diğer methodlar içerisinde kendini farklılaştırıcı hiç bir özelliği bulunmamaktadır. Yalnızca statik sınıflar metotlar içerir.

Örnek kaynak kodlar:


string adres;
adres = @"C:\WINDOWS";
DirectoryInfo dosyabilgisi = new DirectoryInfo(adres);
MessageBox.Show(

"Dosya adı:" + dosyabilgisi.Name + "\n" +
"Dosya yolu: " + dosyabilgisi.FullName + "\n" +
"Dosyanın oluşturulma tarihi:" + dosyabilgisi.CreationTime + "\n" +
"Dosyaya son giriş tarihi:" + dosyabilgisi.LastAccessTime + "\n" +
"Son değişiklik zamanı:" + dosyabilgisi.LastWriteTime + "\n" +
"Son erişim zamanı:" + dosyabilgisi.LastAccessTime + "\n" +
"Dosya var mı :?" + dosyabilgisi.Exists + "\n" +
"Klasör adı:" + dosyabilgisi.Name + "\n" +
"Bir üst klasör:" + dosyabilgisi.Parent + "\n" +
"Kök Dizin:" + dosyabilgisi.Root + "\n"

);

Sonuç:

directory_sinifi

Fileinfo sınıfı

string adres=@"C:\WINDOWS\deneme.txt";
FileInfo d=new FileInfo(adres);
Console.WriteLine("Öznitelikler: "+d.Attributes);
Console.WriteLine("Oluşturulma tarihi: "+d.CreationTime);
Console.WriteLine("Var mı? "+d.Exists);
Console.WriteLine("Uzantı: "+d.Extension);
Console.WriteLine("Tam adres: "+d.FullName);
Console.WriteLine("Son erişim zamanı: "+d.LastAccessTime);
Console.WriteLine("Son değişiklik zamanı: "+d.LastWriteTime);
Console.WriteLine("Boyut: "+d.Length);
Console.WriteLine("Klasör adı: "+d.Name);
Console.WriteLine("Bulunduğu klasör: "+d.DirectoryName);

Path sınıfı:

string adres=@"C:\dizin\deneme.txt";
Console.WriteLine("Uzantı: "+Path.GetExtension(adres));
string yeniAdres=Path.ChangeExtension(adres,"jpg");
Console.WriteLine("Yeni uzantı: "+Path.GetExtension(yeniAdres));
string adres2=@"C:\klasör";
Console.WriteLine("Yeni adres: "+Path.Combine(adres,adres2));
Console.WriteLine("Klasör: "+Path.GetDirectoryName(adres));
Console.WriteLine("Dosya adı: "+Path.GetFileName(adres));
Console.WriteLine("Uzantısız dosya adı: "+Path.GetFileNameWithoutExtension
Console.WriteLine("Tam adres: "+Path.GetFullPath(adres));
Console.WriteLine("Kök dizin: "+Path.GetPathRoot(adres));
Console.WriteLine("Geçici dosya adı: "+Path.GetTempFileName());
Console.WriteLine("Geçici dosya dizini: "+Path.GetTempPath());
Console.WriteLine("Dosya uzantısı var mı? "+Path.HasExtension(adres)
Console.WriteLine("Alt dizin ayıracı: "+Path.AltDirectorySeparatorChar
Console.WriteLine("Dizin ayıracı: "+Path.DirectorySeparatorChar);
Console.Write("Geçersiz dosya adı karakterleri: ");
char[] dizi=Path.GetInvalidFileNameChars();
foreach(char b in dizi)
Console.Write(b+" ");
Console.Write("\nGeçersiz adres karakterleri: ");
char[] dizi2=Path.GetInvalidPathChars();
foreach(char b in dizi)
Console.Write(b+" ");
Console.WriteLine("\nAdres ayırıcı karakter: "+Path.PathSeparator);
Console.WriteLine("Kök dizin ayıracı: "+Path.VolumeSeparatorChar);

dosya_ozellikleri_c_sharp_ornek

Projeyi indir