-

Nuget Nedir, Nasıl Eklenir?

Nuget; ücretsiz, açık kaynak, third party programlar ya da dll leri projemize eklemek için tasarlanmış bir paket yöneticisidir. Nuget teknolojisi hayatımıza Visual Studio 2010 ile girdi, Visual Studio 2012’den sonraki versiyonlarda default olarak yüklü gelir. Microsoft’un yayınlamış olduğu nuget paketleri indirip kullanabiliyor olmamızın yanında kendi nuget paketimizi oluşturup kullanıma açabiliriz, yazının devamında, örnek bir nuget paket oluşturup nasıl yayınlanabileceğini anlatıyor olacağım.

Visual Studio’da nuget kurulu değilse Tools->Extensions and Updates’den girerek aşağıdaki gibi kurulumu yapılabilir. Yukarıda da belirttiğim gibi Visual Studio 2012’den sonrasında Nuget kurulu gelir.

blog1

blog2

Çalıştığımız projeye ihtiyacımız dahilinde nuget paketi yükleyebiliriz. Solution ya da projeye sağ tıklayıp “Manage Nuget Package” dedikten sonra açılan yönetim ekranından istediğimiz paketi aşağıdaki resimlerde olduğu gibi ekleyebiliriz, örnek olması açısından Asp.net SignalR paketini projeye ekledim.

blog3

blog4

Alternatif olarak Package Manager Console’dan komutlar yazarak nuget paketler yükleyebilirsiniz.

blog5

Eklediğimiz paketi aşağıdaki gibi kontrol edebiliriz;
blog6

References bölümünden eklediğimiz paketin dll’ini görebiliriz;
blog7

Kendi Nuget Paketimizi Ekleme

Nuget, paket yönetimi teknolojisinden genel olarak  bahsettikten sonra kendi paketimizi nasıl oluşturup yayınlarız ona bakalım;

Kendi Nuget paketimizi oluşturmak için Nuget Package Explore’a ihtiyacımız olur. Buradan indirebilirsiniz. Hızlı kurumlumdan sonra uygulamayı açıp kendi nuget paketimizi oluşturmaya başlayabiliriz. “Package Contents” alanına “add existing file” deyip varolan dll’i nuget paketimize ekleyebiliriz. Örnek olması açısından herhangi bir dll’i pakete ekliyorum.

blog8

Paket ile ilgili bilgileri aşağıdaki gibi doldurup masaüstünde bir yere .nupkg uzantısı ile kaydediyoruz;

blog9

Nuget.org’a üye olup giriş yaptıktan sonra, “Upload Package” sekmesinden masaüstüne kaydettiğimiz .nupkg dosyasını yüklüyoruz. Eğer paket adını değiştirmeden yüklerseniz aşağıdaki gibi hata alırsınız, ben aldım ordan biliyorum  :)

blog10Kaydedilen nuget paketi yüklenip “Upload” denir.

blog11

Yükeleme işlemi tamamlandıktan sonra aşağıdaki gibi paket bilgilerini görebiliriz.  Böylece kendi nuget paketimizi yayınlamış olduk.

blog12

 

Yayınlamış olduğumuz paketi projede kullanmak için  Package Manger Console’da “Install-Package DeryaNugetPackage” komutu çalıştırılır, komut başarı ile çalışırsa projemize nuget paketi yüklemiş oluruz.

blog13

Nuget paketin eklendiğini aşağıdaki gibi kontrol edebiliriz;

blog14

Eğer şirket işi uygulamalar için kullandığınız, oluşturduğunuz paketleri dışarı açmak istemezseniz kendi repository’nizi oluşturup belirlediğiniz alana ya da lokale nuget paketleri publish ederek kullanabilirsiniz…

Exception Handling

1.      Exception Nedir?

Exception hata sayılabilecek ya da sayılmayacak yazılım veya donanım tarafından algılanan özel müdehale gerektiren programın çalışma ya da derlenme zamanında ortaya çıkabilcek herhangi beklenmedik durumdur.

Exceptionların Nedenleri

  • Donanımsal problemler,
  • Son kullanıcı kaynaklı,
  • Programlama mantığından gelen hatalar olabilir.

Sık Karşılaşılan Exceptionlar

  • Validasyonlarlara takılabilir,girilen veri geçersiz olabilir,
  • Network bağlantısı problemleri,
  • Veri tabanına bağlananamama sorunu,
  • Dosya path ini bulamama sorunu,
  • Tip dönüşüm hatası,
  • Dizi indexi dışında bir değer gelmesi,-1 gibi

2.      Exception Handling Nedir?

Hata algılandıktan sonraki özel müdehale sürecine exception handling,bu kod bloğuna da exception handler denir.Uygulamanın derleme veya çalışması sırasında ortaya çıkan herhangi bir sorun programla dili tarafından algılanır ve senaryoya göre önlemler alınır.Son kullanıcı bazlı problemler için ekrana uyarı verip hatayı düzeltmesini istemek örnek  verilebilir.

3.      Exception Handling Faydaları

  • Hata olduğu durumlarda hatayı giderdikten sonra program çalışmaya devam edebilir,
  • Hata olmadığı zamanlarda da performans kaybı olmaz,
  • Son kullanıcı kaynaklı bir hata ise kullanıcının hatayı gidermesine imkan tanır,
  • Exception Handling yazılımcının farklı durumlar üzerine düşünmesini sağlar.
Exception Handling Olmayan Dil Exception Handling Olan Dil:
Hata   meydana geldiğinde işletim sistemine gider mesajı gösterir ve programı   sonlandırır. Program   hatayı yakalar ve düzeltme şansı doğar bundan dolayı program sonlanması   yerine devam edebilir.

 

 

4.      Exception Handling Kontrol Akışı

Aşağıdaki akıştan da görebileceğimiz gibi kod akışı devam ederken bir hata olduğunda hata exception handlera iletilir.Handling senaryosana göre bir tepkide bulunur ve hata giderildiğinde kod akışına devam eder.

 se

5.      Exception Handling  Terminolojisi

Try

Try bloğu kaynak kodların normal şekildeki işleyişini içerir.Hata olmaz ise kod try bloğu içinde devam eder catch bloğuna girmeden sonlanır.

Catch

Hata olduğunda gireceği bloktur.Hata olduğu durumlarda ne yapılması isteniyorsa bu bloğa eklenir.Farklı hata tipleri için farklı tepki vermesi istenirse birden fazla catch bloğu eklenebilir.Catch blokları sırayla okunur, hangisinin bloğuna ilk girerse onun hatasını fırlatır.Her bir catch bloğuna tek parametre verilebilir ve parametreler tekil(unique) olmalıdır.

Finally

Kod akarken try veya catch bloklarından birinin içine girer,bunlardan bririne girdikten sonra kısıt olmaksızın finally kod bloğunu işler.

Throw

Throw un kelime karşılığı fırlatmadır.Hata meydana geldiğinde ne göstereceği ya da ne göndereceğine karar verir.Kütüphanelerdeki hazır throw ları kullanabileceğimiz gibi hata durumunda kendi özel throw umuzu da fırlatmasını isteyebiliriz.

6.      Farklı Dillerde Exception Handling

C++’da Exception Handling:

C++ diline 1990 yılında eklenmiştir.Temellerini  CLU,Ada ve ML den almaktadır. Bütün hatalar Exception sınıfından türer ve hatalı bir durum oluştuğunda program bu sınıfın bir nesnesini fırlatır.

Formatı aşağıdaki gibidir:

            try {

            — code that is expected to raise an exception

            }

             catch (formal parameter) {

            — handler code

            }…catch (formal parameter) { }

Formal parametreler hata bilgisini handlera iletmek için kullanılır.

Bir programda tanımlı olan hatalar fırlatılabilir,tanımsız olan bir hata görüldüğünde default exception olan unexcepted metodu çağırılır,bu da programı normal bir şekilde sonlandırır.

C++ Exception Hiyerarşisi

c++

Exception

description

bad_alloc thrown by new on allocation failure
bad_cast thrown by dynamic_cast when fails with a referenced   type
bad_exception thrown when an exception type doesn’t match any   catch
bad_typeid thrown by typeid
ios_base::failure thrown by functions in the iostream library

Java’da Exception Handling:

Temellerini OOP mimarisinden almıştır.Bütün hatalar Throwable sınıflarından türeyen sınıfların nesneleridir.

Java kütüphanesi Throwable için iki alt sınıf içerir:

java

  • Error

Yığın(heap) doluluğu gibi durumlarda Java yorumlayıcı tarafından fırlatılır

Kullanıcı programları tarafından handle edilemez.

  • Exception

Kullanıcı tarafından tanımlanan hatalar genelde bu alt sınıfa aittir.

İki tanımlı alt sınıfı vardır:IOExceptions ve RunTimeException.Örnek hatalar; ArrayIndexOutOfBoundsException and NullPointerException.

Try’ın syntaxi C++ daki gibidir.Hatalar c++ daki gibi throw ile fırlatılıyor.Çoğunlukla throw nesneyi oluşturmak new operatorü içerir.

throw new MyException();

Hata ve handlerın bağlantısı c++’dan daha kolaydır.

Hata geldiğinde handler yoksa program sonlandırılır.

Javadaki throws c++ daki throw dan oldukça farklıdır.Javadaki throws programcıya daha fazla ayrıntı verir.Error sınıfından ve RunTimeException türündeki ve onlardan türeyen bütün hatalara unchechked exception geriye kalanlara ise checked exception denir.Checked exception olanlar throws da geçiyordur ya da bir metod içinde handle ediliyordur.

public class ExcepTest{

   public static void main(String args[]){

      int a[] = new int[2];

      try{

         System.out.println(“Access element three :” + a[3]);

      }catch(ArrayIndexOutOfBoundsException e){

         System.out.println(“Exception thrown  :” + e);

      }

    finally{

         a[0] = 6;

         System.out.println(“First element value: ” +a[0]);

         System.out.println(“The finally statement is executed”);

      }   }  }

Output:

Exception thrown  :java.lang.ArrayIndexOutOfBoundsException: 3

First element value: 6

The finally statement is executed

Diller Arası Exception farklılıkları

Ortaya çıkan hatalar her dilde aynı etkiyi yaratmaz.

  • 0 a bölünme hatası C# dilinde DivisionByZero hatasını tetikler ama php ve javacsriptte kod akışını durdurmaz.
  • Javascriptte tanımlı olmayan bir fonksiyonu çağırmak exceptiona sebep olur ama php de aynı hata fatal error’a sebep olur kod akışı durur.

7.      Referanslar

  1. http://www.tutorialspoint.com/java/java_exceptions.htm
  2. http://www.cplusplus.com/doc/tutorial/exceptions/
  3. http://people.cs.aau.dk/~normark/oop-csharp/html/notes/exceptions-note-exception-hier-cs.html
  4. Exception Handling in C++,CS-2303 System Programming Concepts
  5. Concepts of Programming Languages,Robert W.Sebesta.Exception Handling Event Handling,Chapter 14
  6. Exception Handling, http://guvensahin.com/

C#’DA DELEGATE(TEMSİLCİ)

Delegate Nedir?

C#’da  kullanılabilen ve bir .Net kavramı olan delegate’in kelime anlamı temsilcidir,temsil ettikleri kavram da metodlardır(fonksiyon). Delegateler metodların başlangıç adreslerini refere(işaret) ederler.C#daki delegate C++’daki  Function Pointera(fonksiyon işaretçileri) benzer görev yapar.Bundan farklı olarak sadece beklediği türden referans verilebilir.Delegate atama işlemi yapıldıktan sonra  metod yerine kullanabiliriz.

Delagete Nasıl Tanımlanır,Nasıl Kullanılır?

Delegate tanımlanırken geri  dönüş tipi ve aldığı parametre temsil edeceği  metoda göre belirlenir.Metodada kullanılırken tanımlanan geri dönüş tipi ve aldığı parametreye göre işlem yapar.

<erişim belirleyici> delegate <geri dönüş tipi> <temsilci ismi>(<varsa parametreler>) formatında tanımlanır.

class Program

{

delegate int MyDelegate(int a,int b);//şeklinde tanımlanır

static void Main(string[] args)

{

MyDelegate del = new MyDelegate(metodAdd);//şeklide kullanılır

Console.WriteLine(“addition:”+del.Invoke(1,2));

Console.ReadLine();

}

public static int metodAdd(int a,int b)

{

return a+b;

}

Çıktı:

addtion

Farklı şekillerde de kullanılabilir:

  • New yazmadan;

MyDelegate del = metodAdd;//şeklide kullanılır

Console.WriteLine(del.Invoke(1,2));

  • Invoke kullanmadan;

MyDelegate del = new MyDelegate(metodAdd);//şeklide kullanılır

string sonuc = metodAdd(1, 2);

Delegatelerde metod ekleme çıkarma işlemleri yapılabilir.

class Program

{

delegate string MyDelegate(int a, int b);//şeklinde tanımlanır

static void Main(string[] args)

{

MyDelegate del = new MyDelegate(metodAdd);//şeklide kullanılır

del += new MyDelegate(metodSub);

Console.WriteLine(del.Invoke(1,2));

Console.ReadLine();

}

public static string metodAdd(int a,int b)

{

return “Addition:”+(a+b).ToString();

}

public static string metodSub(int a, int b)

{

return “Subtraction:”+(a- b).ToString();

}

Çıktı:

subt

Başka bir metod eklendiği zaman ise FIFO mantığında metodlar sıra ile çalışmış olur.Yukarıdaki örnekte once toplama işlemini yapar sonra çıkarma işlemini yaparak ekrana çıkarma işlemini sonucunu yazdırmış olur.

Aynı şekilde;

del -= new MyDelegate(metodSub);

yazılırsa metodan çıkarılır ve onun işlemi yapılmaz.

Delegate Nasıl Fayda Sağlar?

  •     Runtime de hangi metodların kullanılacağına karar vermek,
  •     Bellek yönetimi açısından fayda sağlamak,
  •    Gereksiz yere kod yazılmasının önüne geçmek,
  •    Event kullanıldığında eventin yakalanacağı metodu belirlemek.

 

DERYA GÜNDÜZ

 

 

C#’da Xml’den Veri Okuma

Bu yazımda sizlere xml’den veri okuyup ekranda göstermek ile ilgili basit bir uygulama üzerinde anlatım yapıyor olacağım.

Elimizde içinde 3 şehir bilgisi olan bir xml var.Bu Xmli okuyarak sağda liste şeklinde şehir isimleri görünmeli,seçili olana ait resimler ve text bilgisini göstermemiz isteniyor.

Öncelikle Xml dosyasını analiz etmeliyiz.Xml dosyasının şöyle bir hiyerarşisi var.

xml

Sağda şehir isimlerinin görünmesini istiyoruz.”City” nodeları altında gezip “Name” attributesini almalıyız.

readxml

Seçilen isme göre de  solda resim ve text bilgisi göstermeliyiz.Bunun için yine “City” nodelarındaki “Name”,”Detail”  attributeleri ve “City”  altındaki “Image” nodelarını okumalıyız.

try

İleri ve geri tuşlarıyla da resimlerin değişmesi isteniyor.

previos

Sonuç olarak böyle bir ekran oluşmuş oluyor.

şehir

Projenin tamamını  buradan  indirebilirsiniz

DERYA GÜNDÜZ

C#DA RUN-TİME NESNE-KONTROL OLUŞTURMA

Diyelim ki c#da  bir sinema otomasyonu yapmanız gerekiyor.Formu dizayn ederken yapmanız gereken koltukları temsilen herhangi bir kontrol eklemektir.Bir sinema salonu 50 kişilik ve 4 tane de salon varsa toplamda formlarınız için 200 tane kontrol eklemeniz gerekmektedir.Oldukça uğraştırıcı ve zaman kaybettiren bir dizayn işlemi olacaktır sizin için.Programlama bilgisi çok iyi olmayan birinin yapacağı kontrolleri tek tek eklemek olacaktır,oysa ki object oriented programming(nesne yönelimli programlama)  dan ve nimetlerinden haberdar olan programcı ise kontrolleri tek tek eklemez onları kodu çalıştırırken yapabileceğini bilir.Benim bahsedeceğim de 2. seçenek,yani kontrolleri elle, tek tek değil de kod içerisinde oluşturup çalıştırmaktır, yani Run-Time(çalışma anında) nesne oluşturmak olacaktır.
Run-Time kontrol oluşturabilmek için o kontrolden bir nesne yaratmanız gerekecektir.
Button btn = new Button();  diye tek bir nesne oluşturup döngüler yardımıyla istediğiniz kadar buton görüntüleyebilirsiniz.
Bu konuyla ilgili BilgeAdamda staj yaparken derste yazdığımız  şu  kodu beraber inceleyelim:

int x = 40; //başlangıç x koordinatı

int y = 40;//başlangıç y koordinatı
int b = 1; //yerleştirilen buton numarasının tutar
private void Form3_Load(object sender, EventArgs e) //işlemleri form yüklenirken yapsın
{
for (int i = 0; i < 10; i++)                          //matrix mantığı ile 100 tane buton oluşturacaz
{
for (int j = 0; j < 10; j++)
{
Button btn = new Button();
//butondan bir nesne oluşturmamız gerekecek
btn.Name = “btnNo” + b;
//her birinin adı oluşum sıralarının adını alacaktır
btn.Text = b.ToString();
btn.Size = new Size(40, 40);              //size her defasında 40-40 olacaktır
btn.Left = x;
x += 40;                                //x koordinatı tek bir satır için her defasında 40 yana kaymalı
btn.Top = y;                         //y koordinatı aynı satır aynı kalır alt satıra geçildiğinde 40 artar
b++;                             //butonun numarası her defasında bir artacaktır
btn.Click += new EventHandler(btn_Click);    //hatta isterrsek o butona event bile yazarız
//butona basılma eventini tutar
//event olduğunu += gösterir
//bu formun kontrollerine oluşturduğun btn nesnesini eklemen gerek
this.Controls.Add(btn);                  //btn kontrolünün nereye ait olduğunu belirtmeiz gerekir,formun kontrolü
}
x = 40;                     //ilk 10 taneyi oluşturduktan sonra alt satıra geç ama lefti değişmeyecek
y += 40;                    //top üstten bir satır uzaklaştığı için +40 olmalı
}    }
void btn_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
//sender içinde thisin verilerini tutar
MessageBox.Show(“Merhaba ” + btn.Text + ” im..”);
}

işte çıkan sonuç:

Butona tıkladığımızda da şöyle bir görüntü oluşur:

DERYA GÜNDÜZ

C#’DA SQLDEN VERİ ÇEKME-LİSTVİEW’E YAZDIRMA

Ado.net teknolojisi sayesinde .net applicationdan database ulaşıp orada veri çekebiliyoruz.Bu vereceğim örnekte de C# veri tabanından sql veri tabanına bağlanıp ordaki Northwind veri tabanında bilgi alıp listviewe yazdıracaz.Bu yayınlayacağım örnek kod BilgeAdam’da staj yaparken girdiğim derslerde gördüğümüz örneklerden.
Önce form disaynını yapmalıyız,
-listview eklemeliyiz
-listviewın view propetysini “details” yapmalıyız,
-”edit colonms” seçeneğinden iki kolon ekleyip bu kolanlara “ürün adi” “fiyat”  adlarını vermeliyiz,
-kodlama kısmına geçebiliriz
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;            //sql ile bağlantı kurmak için gerekli kütüphane
namespace AdoConnected1
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        private void Form2_Load(object sender, EventArgs e)
        {
//server=server name   database=database name
//integrated security=true     //windows authenticationda çalışıldığını gösterir
            SqlConnection conn = new SqlConnection(“server=DERYA-PC\SQLEXPRESS;database=Northwind;integrated security=true”);
            //komut nesnesi
            SqlCommand cmd = new SqlCommand(“select ProductName,UnitPrice from Products”,conn);
            SqlDataReader dr;
            conn.Open();
            dr = cmd.ExecuteReader();//komudu çalıştır execute okusun
            string urunAdi;
            decimal fiyat;
            while (dr.Read())
            {
                urunAdi = dr.GetString(0);//0. kolon
                fiyat = dr.GetDecimal(1);//2. kolon
                ListViewItem Ivi = new ListViewItem();
                //ListView e ekleme yapmak için itemından nesne oluşturup ona ekliyoruz
                Ivi.Text = urunAdi;     //text ilk kolon
                Ivi.SubItems.Add(fiyat.ToString());  //ondan sonraki bütün kolonlar subitem oluyor
                listView1.Items.Add(Ivi);
            }
        }
    }
}
DERYA GÜNDÜZ

C#’DA OTOMATİK PROPERTY EKLEMEK

BilgeAdam kursunda Çağlar Hoca ile Sql dersinde bugün yeni birşey daha öğrendim,çok kısa ama bence güzel bir ayrıntı,ya da güzellik diyeyim.
C#’da oluşturulan class elemanları için property yazmamız gerektiği zaman,yeni framework ile gelen özelliklerden birtanesi olarak,property’i taslak olarak kısa yoldan ekleyebiliriz.Uzun uzun yazmak yerine kısa yoldan eklemiş oluruz,ya da bazen yapının nasıl olduğunu hatırlamayabiliriz.
string productName
tanımlamasını yaptıktan sonra,productName ‘in propertysini yazmamız gerkiyorsa:
–productName  üstünü ters tıkla/refactor/encapsulate field tıklanır

–açılan pencerelerde ok/apply dedikten sonra property otomatik olarak projemize eklenmiş olur

–ilk harf küçük harf ise property adını kendisi büyük harf verir,ilk harf büyükse kendisi ad+1 gibi isimler verir.

DERYA GÜNDÜZ

SQL C# BAĞLANTISI-C#DAN VERİTABANINA BİLGi EKLEME-SİLME

Sqlde tablolarımızı oluşturduktan sonra c#da  kodlar yardımıyla veritabanına bilgi ekleme ya da silme işlemlerini gerçekleştirebiliriz.
Bununla ilgili c#da yazılmış örnek kodu inceleyelim:
Öncelikle projede gerekli form dizaynını yapmalıyız,bir tane datagridview ve gerekli button textbox ve labelları eklememiz gerekir

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;                                 //sql bağlantısı için gerekli kütüphane
namespace Sql_komutları_deneme
{
public partial class Form1 : Form
{   //tanımlamaları public yapıyoruz ki hepsi için geçerli olsun
SqlConnection baglantim;
SqlDataReader reader;
SqlCommand komut;
SqlDataAdapter adaptör;
DataSet dataset;

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

baglantim = new SqlConnection();    //sql ile bağlantı kurulmasını sağlar
baglantim.ConnectionString = “Integrated Security=True;  Initial Catalog=csaharptanbaglanma;  Data Source=DERYA-PC\SQLEXPRESS;”;     //database ve serverisimlerinin verilmesi gereken connectionstring
baglantim.Open();                      //bağlantıyı açmak gerekir

dataset = new DataSet();
SqlDataAdapter adaptör = new SqlDataAdapter(“select* from  Bilgiler    “, baglantim);   //bağlanılacak tablo belirlendi

adaptör.Fill(dataset, “Bilgiler”);          //dataadapterdaki bilgiler datasete aktarıldı

dataGridView1.DataSource = dataset.Tables[0];           //tablo datagridviewde görüntüleniyor

komut = new SqlCommand();
komut.Connection = baglantim;            //sql cümlelerinin yazıldığı yer

}

private void button_sil_Click(object sender, EventArgs e)
//silme  butonu,seçili olan satırın silinmesini sağlıyor
{

try
{

//komut.CommandText = “delete from Bilgiler where Ad=’abc’”;     //adı abc olanı siler
//seçili olanın silinmesi olayı
komut.CommandText = “delete from Bilgiler where Id=’” + dataGridView1.CurrentRow.Cells["Id"].Value.ToString() + ”  ‘  “;//seçili olanı siliyor
reader = komut.ExecuteReader();
reader.Close();
}
catch
{
MessageBox.Show(“secili alan yok!!!!!”);
}
finally
{
Form1_Load(sender, e);     //silme işlemini yaptıktan sonra formun güncellenmesini sağlıyor

}

}
//textboxlara yazılanların veri tabanına eklenemesini sağlıyor
private void button_ekle_Click(object sender, EventArgs e)
{
try
{

komut.CommandText = “insert into Bilgiler values(‘” + textBox1.Text + “‘,’” + textBox2.Text + “‘,’” + textBox3.Text + “‘,’” + textBox4.Text + “‘,’” + textBox5.Text + “‘)”;
reader = komut.ExecuteReader();   /

}
catch
{
MessageBox.Show(“ekleme islemi gecersiz!!!bosalan veya farklı id de eleman eklenmeli”);
}
finally
{
Form1_Load(sender, e);     //silme işlemini yaptıktan sonra formun güncellenmesini sağlıyor

}
}

}
}

     Yapmış olduğumuz bütün değişiklikler veritaanına da yansımış oluyor…………..

DERYA GÜNDÜZ

c#’da hata oluşturup bi yerde çağırmak(catch’de olduğu gib)

bilindiği gibi c#da try-catch olayı vardır;hata olmadığı durumlarda try,hata olduğu zaman  catch çalışır.
peki kendimiz bir hata oluşturmak istersek?????:

  • 1. yol:

//exception sınıfından oluşturulan hata

Exception hata = new Exception(“Bu benim hatam”);

//oluşan hatayı nesnenin hata mimarisi içine fırlatma.

throw hata;//burda hata verir
//program throw kısmına gelince hata verir ve hata ekranında “bu benim hatam”,yazar

  • 2.yol:class kullanarak yapalım

class KendiHatamiz : Exception

{
public KendiHatamiz()

: base(“derya’nın hatası”)

{}
}
int main()
{
KendiHatamiz kndHata = new KendiHatamiz();

throw kndHata;//burda da hata verir
//throw’a geldiğinde program durur ve hata alanında “derya’nın hatası “,yazar.
}

DERYA GÜNDÜZ