Nano'nun Günlüğü…

Ideallerimi gerceklestirmek icin arastiriyorum, Unutmamak icin yaziyorum!

  • Bulundugunuz Sayfa: 
  • Ana Sayfa
  • .NET Üç Katmanlı Mimari

.NET Üç Katmanlı Mimari

Gönderim Temmuz 28th, 2013

Daha onceden Java programlama dili ile birlikte uc katmanli mimariyi birazda olsa dile getirmeye calismistik. Bunu, Data Access Object Pattern (DAO) ve UML Uygulamasi isimli makalenin http://www.sevdanurgenc.com/archives/1209 linkinden isterseniz tekrar inceleyebilirsiniz. Cok fazla bir farklilik olmadan .Net uzerinde isler nasil ilerliyor, gelin isterseniz biraz inceleyelim.

Malum mantik yine ayni sekilde ilerliyor olacak. Egerki veritabani baglantiniz varsa bunun icin gerekli olan baglanti ayarlarini yazabilecegimiz bir sinif olusturmamiz gerekiyor. Elimizde verilerimizi okuyabilmemiz ve yazabilmemiz icin isaretcilerimize gerek vardir. Bunu Poco siniflari ile yapiyor olacagiz. Ardindan Data Access Layer’imiz icin gerekli olan DAO siniflarimizi yani Data Access Object siniflarimizi yaziyor olacagiz. Bunun sayesinde veritabanimizdaki verilerimizi diger katmanlara ulastirabiliyor olacagiz. Sirada, Business Logic Layer icin gerekli olan BLL siniflarimizi hazirlamaya gelecektir ki bu katman sayesinde de, uygulamanizin bir nevi is mantigini yonetebiliyor olacaksiniz. Data Access Layer’imizla haberlestikten sonra is mantigindaki tum islemleri gerceklestirerek sonuclari Presentation Layer’a ulastiracaktir. Presentation Layer ‘da kullaniciya verilerinizi daha mantikli ve duzenli bir sekilde aktarabiliyor olacaginiz veya kullanicidan aldiginiz verileri database’inize ulastirabileceginiz ve arka planda tum bu islemleri kullaniciya gostermeyecek olan bir arayuzdur.

 

Adım Adım…

Projemizi Adim Adim hazirlayacak olursak;

– Veri Tabani Baglanti sinifi yazilir.

– Pocos Layer icin gerekli olan Poco sinifi yazilir.

– Data Access Object icin gerekli olan DAO sinifi yazilir.

– Business Logic Layer icin gerekli olan BLL sinifi yazilir.

– Presentation Layer icin gerekli olan Arayuz formu tasarlanir.

 

 

veritabaniBaglanti.cs Kaynak Kodlari;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace UcKatmanliMimari
{
public class veritabaniBaglantisi
{
private SqlDataAdapter dataAdapter;
public SqlConnection baglanti;

public veritabaniBaglantisi()
{
dataAdapter = new SqlDataAdapter();
baglanti = new SqlConnection(@”Data Source=SEVDANUR-PC\GENC;Initial Catalog=TATBilgiTeknolojileri;Integrated Security=True”);
}

private SqlConnection openConnection()
{
if (baglanti.State == ConnectionState.Closed || baglanti.State == ConnectionState.Broken)
{
baglanti.Open();
}
return baglanti;
}

public DataTable executeSelectQuery(String _query, SqlParameter[] sqlParameter)
{
SqlCommand myCommand = new SqlCommand();
DataTable dataTable = new DataTable();
dataTable = null;
DataSet ds = new DataSet();
try
{
myCommand.Connection = openConnection();
myCommand.CommandText = _query;
myCommand.Parameters.AddRange(sqlParameter);
myCommand.ExecuteNonQuery();
dataAdapter.SelectCommand = myCommand;
dataAdapter.Fill(ds);
dataTable = ds.Tables[0];
}
catch (SqlException e)
{
Console.Write(“Error – Connection.executeSelectQuery – Query: ” + _query + ” \nException: ” + e.StackTrace.ToString());
return null;
}
finally
{
}
return dataTable;
}

public bool executeInsertQuery(String _query, SqlParameter[] sqlParameter)
{
SqlCommand myCommand = new SqlCommand();
try
{
myCommand.Connection = openConnection();
myCommand.CommandText = _query;
myCommand.Parameters.AddRange(sqlParameter);
dataAdapter.InsertCommand = myCommand;
myCommand.ExecuteNonQuery();
}
catch (SqlException e)
{
Console.Write(“Error – Connection.executeInsertQuery – Query: ” + _query + ” \nException: \n” + e.StackTrace.ToString());
return false;
}
finally
{
}
return true;
}

public bool executeUpdateQuery(String _query, SqlParameter[] sqlParameter)
{
SqlCommand myCommand = new SqlCommand();
try
{
myCommand.Connection = openConnection();
myCommand.CommandText = _query;
myCommand.Parameters.AddRange(sqlParameter);
dataAdapter.UpdateCommand = myCommand;
myCommand.ExecuteNonQuery();
}
catch (SqlException e)
{
Console.Write(“Error – Connection.executeUpdateQuery – Query: ” + _query + ” \nException: ” + e.StackTrace.ToString());
return false;
}
finally
{
}
return true;
}

public bool executeDeleteQuery(String _query)
{
SqlCommand myCommand = new SqlCommand();
try
{
myCommand.Connection = openConnection();
myCommand.CommandText = _query;
dataAdapter.UpdateCommand = myCommand;
myCommand.ExecuteNonQuery();
}
catch (SqlException e)
{
Console.Write(“Error – Connection.executeUpdateQuery – Query: ” + _query + ” \nException: ” + e.StackTrace.ToString());
return false;
}
finally
{
}
return true;
}
}
}

KullaniciGirisiPOCO.cs Kaynak Kodlari;

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

namespace UcKatmanliMimari.ValueObject
{
public class KullaniciGirisiPOCO
{
private string _kullaniciAdi;
private string _sifre;
private string _isim { get; set; }
private string _soyisim { get; set; }

public KullaniciGirisiPOCO()
{
}

public string kullaniciadi
{
get
{ return _kullaniciAdi;  }
set
{ _kullaniciAdi = value; }
}

public string sifre
{
get
{ return _sifre;  }
set
{ _sifre = value; }
}

public string isim
{
get
{ return _isim;   }
set
{ _isim = value;  }
}

public string soyisim
{
get
{ return _soyisim;  }
set
{ _soyisim = value; }
}
}
}

KullaniciGirisiDAO.cs Kaynak Kodlari;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace UcKatmanliMimari.DataAccessObject
{
public class KullaniciGirisiDAO
{
private veritabaniBaglantisi baglanti;

public KullaniciGirisiDAO()
{
baglanti = new veritabaniBaglantisi();
}

public DataTable searchKullaniciAdiveSifre(string kullaniciadi, string sifre)
{
string sorgu = string.Format(“select * from Tbl_Kullanicilar where KullaniciAdi = @KullaniciAdi and Sifre = @Sifre”);
SqlParameter[] sqlParameters = new SqlParameter[2];
sqlParameters[0] = new SqlParameter(“@KullaniciAdi”, SqlDbType.NVarChar);
sqlParameters[0].Value = Convert.ToString(kullaniciadi);
sqlParameters[1] = new SqlParameter(“@Sifre”, SqlDbType.NVarChar);
sqlParameters[1].Value = Convert.ToString(sifre);
return baglanti.executeSelectQuery(sorgu, sqlParameters);
}

public bool insertKullanici(string kullaniciadi, string sifre, string isim, string soyisim)
{
string sorgu = string.Format(“insert into Tbl_Kullanicilar(KullaniciAdi,Sifre,Isim,Soyisim) values(@KullaniciAdi,@Sifre,@Isim,@Soyisim)”);
SqlParameter[] sqlParameters = new SqlParameter[4];
sqlParameters[0] = new SqlParameter(“@KullaniciAdi”, SqlDbType.NVarChar);
sqlParameters[0].Value = Convert.ToString(kullaniciadi);
sqlParameters[1] = new SqlParameter(“@Sifre”, SqlDbType.NVarChar);
sqlParameters[1].Value = Convert.ToString(sifre);
sqlParameters[2] = new SqlParameter(“@Isim”, SqlDbType.NVarChar);
sqlParameters[2].Value = Convert.ToString(isim);
sqlParameters[3] = new SqlParameter(“@Soyisim”, SqlDbType.NVarChar);
sqlParameters[3].Value = Convert.ToString(soyisim);
return baglanti.executeInsertQuery(sorgu,sqlParameters);
}

public bool updateKullanici(string kullaniciadi, string sifre, string isim, string soyisim)
{
string sorgu = string.Format(“update Tbl_Kullanicilar set Sifre = @Sifre, Isim = @Isim, Soyisim = @Soyisim where KullaniciAdi = ‘” + kullaniciadi + “‘”);
SqlParameter[] sqlParameters = new SqlParameter[3];
sqlParameters[0] = new SqlParameter(“@Sifre”, SqlDbType.NVarChar);
sqlParameters[0].Value = Convert.ToString(sifre);
sqlParameters[1] = new SqlParameter(“@Isim”, SqlDbType.NVarChar);
sqlParameters[1].Value = Convert.ToString(isim);
sqlParameters[2] = new SqlParameter(“@Soyisim”, SqlDbType.NVarChar);
sqlParameters[2].Value = Convert.ToString(soyisim);
return baglanti.executeUpdateQuery(sorgu, sqlParameters);
}

public bool deleteKullanici(string kullaniciadi)
{
string sorgu = string.Format(“Delete from Tbl_Kullanicilar where KullaniciAdi = ‘” + kullaniciadi + “‘”);
return baglanti.executeDeleteQuery(sorgu);
}
}
}

KullaniciGirisiBLL.cs Kaynak Kodlari;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UcKatmanliMimari.DataAccessObject;
using UcKatmanliMimari.PocosLayer;
using System.Data;

namespace UcKatmanliMimari.BussinessLayer
{
public class KullaniciGirisiBLL
{
private KullaniciGirisiDAO _kullaniciDAO;

public KullaniciGirisiBLL()
{
_kullaniciDAO = new KullaniciGirisiDAO();
}

public KullaniciGirisiPOCO getSorgu(string kullaniciadi, string sifre)
{
KullaniciGirisiPOCO kullaniciPoco = new KullaniciGirisiPOCO();
DataTable dataTable = new DataTable();
dataTable = _kullaniciDAO.searchKullaniciAdiveSifre(kullaniciadi, sifre);
foreach (DataRow dr in dataTable.Rows)
{
kullaniciPoco.kullaniciadi = dr[“kullaniciadi”].ToString();
kullaniciPoco.sifre = dr[“sifre”].ToString();
}
return kullaniciPoco;
}

public KullaniciGirisiPOCO getKullanici(string kullaniciadi, string sifre, string isim, string soyisim)
{
KullaniciGirisiPOCO kullaniciPoco = new KullaniciGirisiPOCO();
DataTable dataTable = new DataTable();
_kullaniciDAO.insertKullanici(kullaniciadi, sifre, isim, soyisim);
foreach (DataRow dr in dataTable.Rows)
{
dr[“kullaniciadi”] = kullaniciPoco.kullaniciadi;
dr[“sifre”] = kullaniciPoco.sifre;
dr[“isim”] = kullaniciPoco.isim;
dr[“soyisim”] = kullaniciPoco.soyisim;
}
return kullaniciPoco;
}

public KullaniciGirisiPOCO setKullanici(string kullaniciadi, string sifre, string isim, string soyisim)
{
KullaniciGirisiPOCO kullaniciPoco = new KullaniciGirisiPOCO();
DataTable dataTable = new DataTable();
_kullaniciDAO.updateKullanici(kullaniciadi, sifre, isim, soyisim);
foreach (DataRow dr in dataTable.Rows)
{
dr[“sifre”] = kullaniciPoco.sifre;
dr[“isim”] = kullaniciPoco.isim;
dr[“soyisim”] = kullaniciPoco.soyisim;
}
return kullaniciPoco;
}

public KullaniciGirisiPOCO silKullanici(string kullaniciadi)
{
KullaniciGirisiPOCO kullaniciPoco = new KullaniciGirisiPOCO();
DataTable dataTable = new DataTable();
_kullaniciDAO.deleteKullanici(kullaniciadi);
return kullaniciPoco;
}
}
}

frmKullaniciGirisi.Cs Kaynak Kodlari;

Kullanici Girisi icin gerekli olan 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 UcKatmanliMimari.PocosLayer;
using UcKatmanliMimari.BussinessLayer;

namespace UcKatmanliMimari
{
public partial class frmKullaniciGirisi : Form
{
private KullaniciGirisiBLL _KullaniciGirisiBLL;

public frmKullaniciGirisi()
{
InitializeComponent();
_KullaniciGirisiBLL = new KullaniciGirisiBLL();
}

private void button1_Click(object sender, EventArgs e)
{
KullaniciGirisiPOCO _kullaniciPoco = new KullaniciGirisiPOCO();
_kullaniciPoco = _KullaniciGirisiBLL.getSorgu(textBox1.Text, textBox2.Text);
if ((_kullaniciPoco.kullaniciadi == null) || (_kullaniciPoco.sifre == null))
MessageBox.Show(“Hatali Giris Yaptiniz…”);
else
{
MessageBox.Show(“Hos Geldiniz, ” + _kullaniciPoco.kullaniciadi);
PresentationLayer.frmKullaniciGirisIslemleri giris = new PresentationLayer.frmKullaniciGirisIslemleri();
giris.Show();
}
}
}
}

frmKullaniciGirisIslemleri.cs Kaynak Kodlari;

Kullanici Giris Islemlerinin yapilacagi arayuzun kaynak kodlari.

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 UcKatmanliMimari.PocosLayer;
using UcKatmanliMimari.BussinessLayer;
using System.Data.SqlClient;
using UcKatmanliMimari.DataAccessObject;

namespace UcKatmanliMimari.PresentationLayer
{
public partial class frmKullaniciGirisIslemleri : Form
{
private KullaniciGirisiBLL _KullaniciGirisiBLL;

public frmKullaniciGirisIslemleri()
{
InitializeComponent();
_KullaniciGirisiBLL = new KullaniciGirisiBLL();
}

private void button1_Click(object sender, EventArgs e)
{
KullaniciGirisiPOCO _kullaniciPoco = new KullaniciGirisiPOCO();
_kullaniciPoco = _KullaniciGirisiBLL.getKullanici(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text);
MessageBox.Show(“Kaydiniz Tamamlanmistir.”);
}

private void button2_Click(object sender, EventArgs e)
{
veritabaniBaglantisi vb = new veritabaniBaglantisi();
SqlCommand sorgu = new SqlCommand(“Select * from Tbl_Kullanicilar”, vb.baglanti);
DataTable dataTable = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter(sorgu);
adapter.Fill(dataTable);
BindingSource bindingSource = new BindingSource();
bindingSource.DataSource = dataTable;
dataGridView1.DataSource = bindingSource;
}

private void button3_Click(object sender, EventArgs e)
{
KullaniciGirisiPOCO _kullaniciPoco = new KullaniciGirisiPOCO();
_kullaniciPoco = _KullaniciGirisiBLL.setKullanici(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text);
MessageBox.Show(“Guncelleme Islemi Tamamlanmistir.”);
}

private void button4_Click(object sender, EventArgs e)
{
KullaniciGirisiPOCO _kullaniciPoco = new KullaniciGirisiPOCO();
_kullaniciPoco = _KullaniciGirisiBLL.silKullanici(textBox1.Text);
MessageBox.Show(“Silme Islemi Tamamlanmistir.”);
}
}
}

Ekran Goruntuleri;

Kullanici Giris Ekrani;

 

 

 

 

 

Kullanici Giris Islemleri Ekrani;

 

 

 

 

 

 

 

 

 

Keyifli Calismalar Dilerim…

Etiketler: , , , ,
Bulundugu Konu Etiketleri Visual Studio, Yazilim |

Lutfen Yorumlarinizi Burdan Ulastiriniz!...

You must be Kullanici Adiniz : to post a comment.

Istatistik

  • 1 Uye
  • 334 Yazi
  • 16 Yorum Var