sql etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
sql etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

28 Aralık 2011 Çarşamba

İki Primary Key'li Olan Tablolar Arasındaki Relationlar

Eğer İki Primary Key'i olan tablo ile başka bir tablo arasında realtion kuracaksanız(bu iki primary keyi olan tablodaki primary keylerden biri diğerine foreign key olacaksa),direk bir tanesini alıp bağlamaya çalışırsanız hata ile karşılaşırsınız.
Senaryomuz şu şekilde:


Aslında siz iki sadece isyeri bilgisini bağlamak istiyorsunuz.Bunu denerseniz şöyle bir hata alırsınız:
Bunun içinde foreign key olacak tabloda da iki alanın olması gerek(isyeri ve sirket alanları).İkisini birden bağlamak gerekecek.
Aşağıdaki gib bağladıktan sonra hata almayacaksinizdır:


DERYA GÜNDÜZ

Microsoft Sql'de "Collasion" Hatasının Giderilmesi

Merhaba Arkadaşlar,
Üzerinde çalıştığım bir projede karşılaştığım bir problem ve nasıl giderildiğini sizlerle paylaşmak  istiyorum.Siz de aynı hata ile karşılaşırsanız,çözmeniz kolaylaşır.
Aldığım hata "Collasion" Hatası idi.Tablolar arasında relation yaparken relation kurmaya izin vermeyip aşağıdaki gibi bir hata aldım.




Hata dil ile ilgiliymiş.Tablodaki bağlamak istediğimiz alanlardaki dil seçeneklerinin aynı olması gerekiyor.Tablo1 deki kolonun dil seçeneği(bağlamak istediğimiz kolonlardan biri) aşağıdaki gibi ise:


Tablo2 deki kolonun dil seçeneği(bağlamak istediğimiz kolonlardan biri) aşağıdaki gibi ise:
Collasionun nedeni bu iki dil seçeneğinin aynı olamamasıdır.
Bu hatayı düzeltmek için ise ikisnin dil seçeneği aynı yapılmalıdır.
Collasion seçeneğinin yanındaki 3 nokta tıklanarak dil seçilir.

Böylelikle bu hatayı gidermiş oluyoruz.Umarım faydalı olmuştur.

DERYA GÜNDÜZ

19 Ağustos 2010 Perşembe

XML(EXTENSİBLE MARKUP LANGUAGE-genişletilebilir etiketleme dili)



               Bağımsız bir kuruluş olan W3C (World Wide Web Consortium) organizasyonu tarafından tasarlanan ve bağımsız bir yapıya sahip olan XML (extensible Markup Language),kişilerin kendi etiketlerini tanımlayarak bu etiketler ile hiyerarşik yapı kurabildikleri ,bunları istedikleri zaman değiştirebildikleri ; esnek, teknolojiden -platformdan bağımsız text tabanlı bir meta dilidir. Xml açılımının içerdiği “markup” onun tagler ile kullanıldığını,”exensible” de onun genişletilebildiği yani standart taglerin değil de kendimizin oluşturduğu farklı tagleri de kullanabileceğini ifade eder. Html de bir markup dilidir fakat Xmli Htmlden ayıran en önemli özellik standart taglerin değil de kişilerin tanımladıkları taglerin kullanabiliyor olmasıdır.

Şimdi teknolojiden-platformdan bağımsız derken ne kastettiğimi biraz daha açmak istiyorum:

Günümüz teknolojisi o kadar zenginleşti ve çeşitlendi ki…..Farklı farklı işletim sistemleri,programlar… Bunlar bir yana bir programın bile birden çok farklı versiyonu var. Bu kadar çeşitliliğin olması şüphesiz yanında uyum problemlerini getirecektir.Bir dosyayı aynı programın farklı versiyonlarında çalıştırmak istediğimizde bile zaman zaman problem yaşamaktayız,kaldı ki farklı program ve işletim sistemlerinde yaşanmasın.Bütün teknolojilerde ortak olarak açılan ve çalışan tek dosya türü text dosyalarıdır(notepad).Ama notepad ile en basitinden bir tablo oluşturup bunun üzerinde çalışmak istediğimizde bile bu tabloyu organize etmek baya bir zor olacaktır:kolonların sırası kayabilir,karışabilir….Bunun yerine tablolarımızı hiyerarşik yapı ile xmle atmak işimizi bayağı bir kolaylaştıracaktır.Xml verinin hızlı bir şekilde sogulanmasını,değiştirilmesini,transfer edilmesini,verinin içerik bilgisi ile saklanmasını(bu noktada htmlden ayrılır) sağlar.Xmlin güzel yanlarından birtanesi de uluslararası bir standarttır ve evrensel bir formattır ve firewallara takılmaz(text tabanlı olmasından kaynaklı).

Bir dosyanın xml dosyası olduğu dosyanın başında yazan <?xml version="1.0" encoding="utf-16”?> ifadesinden anlaşılır.Htmldeki gibi açılan tag kapanmalıdır.Genel anlamda xml dosya akışı şu şekilde olur.

Veri tabanından veri çekerek xmle yazdırılabilir ve gerektikçe xmlden okunabilir.Bu şekil bir kullanım daha mantıklı olacaktır,çünkü veri tabanından bilgi almak istediğimizde program her defasında veri tabanına bağlanmak zorunda kalacaktır,oysa ki bir defa bağlanıp veri tabanındakileri xmle yazdırıp gerektikçe xmlden okumak performans,veri tabanını çok meşgul etme ve daha birçok açıdan daha olumlu sonuçlar yaratacaktır.Bu okuma ve yazdırmaları yapmak üzere tanımlanmış “ReadXml ve WriteXml” nesneleri vardır.

WriteXml şu şekilde kullanılır:


SqlConnection conn = new SqlConnection("server=derya-pv\\sqlexpress;database=Northwind;integrated security=true");

SqlDataAdapter adp = new SqlDataAdapter("select CategoryID,CategoryName from Categories", conn);

DataSet dt = new DataSet();

adp.Fill(dt);

dt.WriteXml(dosya);


Böylece veri tabanındaki bilgiler xmle yazılmış oldu.Her veri çekmek istediğimizde “ReadXml” ile verileri xmlden alıp işleyebiliriz.Yada satır satır okuma ve yazma yapmak için XmlTextReader ve XmlTextWriter da kullanılabilir.

Oluşturulan Xml üzerinde update,delete işlemleri için de “XmlDocument” ve “XmlNode” nesneleri oluşturulup kullanılır.

Kimi zaman belirli bir kısmı üzerinde değişiklik yapmak isteriz,bu durumda hepsini belleğe almak yerine sadece değiştirmek istediğimiz kısmı almalıyız.Bunun içinde şu nesneler kullanılmalı:

XPathDocument()-xml şemayı okuyacak nesne

XPathNavigator()-doküman üzerinde gezinecek nesne

XPathNodeNaveigator()-nodelar üzerinde tek tek gezinecek nesne

26 Temmuz 2010 Pazartesi

ADO.NET'TE CONNECTED DİSCONNECTED MİMARİLER

ADO.NET  teknolojisi ile veritabanından veri çekmenin 2 yolu vardır.
  • Connected Mimari
  • Disconnected Mimari
Connected Mimari:
Bu mimaride veri tabanından veri çekme süresi boyunca uygulama veritabanına bağlı kalır ve bilgiler bağlı kalma süresi boyunca çekilebilir.Veri çekmek için veritabanına sürekli bağlı olması zorunluluğundan dolayı sql server sürekli meşgul olur,bu bir dezavantajdır.Connected ile veri çekebilmek için SqlCommand ile ConnectionString yazılır ve veriler SqlDataReader ile okunur.SqlDataReader ile veriler tek tek okunur,bu da bir dezavantaj sayılabilir.Connected mimarinin güzel yönlerinden bir tanesi sqlden alınan verilerin daima en güncel veriler olmasıdır,yapılan  bütün değişikler direk veritabanına yansıdığı için veri alınacağı zaman da en güncel veriler gelir.Connected yapıda disconnected yapıya göre veriler daha  hızlı çekilir(datareaderden dolayı)

Disconnected Mimari:
Bu mimaride uygulama sqle bağlı olmaz,bağlı olmadan veriler çekilir.Peki nasıl oluyor da bağlı olmadığı halde veritabanından veri çekebiliyor?Uygulamanın veritabanına bağlı olmadan veri çekmesini sağlayan yapı SqlDataAdapterdır.Disconnected mimaride  SqlDataAdapter nesnesi oluşturulur ve bu aracı nesne sayesinde veri tabanından veri çekilir,bütün bağlantılar bunun üzerinden yapılır.Uygulama veritabanına hiç bağlanmadığı için de buna  disconnected yapı denilmiş.Disconnected mimaride bağlantı açılıp kapanmaz,SqlDataAdapter bağlantıyı kendisi açar kapatır.DataAdaptör üzerindeki sql verileri datatable ve datasetlere doldurulur(fill).Böylece sqldeki veriler kullanıma hazırdır.
DataTable---->bellek üzerindeki tablodur
DataSet------>bellek üzerindeki datatablelardır(oluşturulan datatablelar datasete atılır)
Disconnected yapıda uygulama veritabanına bağlı olmadığı için veritabanını meşgul etmek anlamında connected yapıdan daha iyidir.Ama disconnected yapı connected yapıya göre daha eski bilgiyi getirir,veritabanı üzerindeki değişiklikler direk veritabanına yansımadığı için en güncel veriye ulaşamıyor.Databasede yapılan değişikler biz istediğimiz zaman veritababnına yansır.



DERYA GÜNDÜZ

21 Temmuz 2010 Çarşamba

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

19 Temmuz 2010 Pazartesi

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'de oluşturulan tablonun backupını(yedeğini) alma-restore(yeniden yükleme))

           Sql de oluşturduğumuz database'i başka bir bilgisayarda açmak istersek ya da bilgisayardaki verilerin silinmesi tehlikesine karşı yedeğini almak isteyebiliriz.Çok kritik bir işlem olmasına karşı bu  işlem Sql'de çok kolay.Birkaç basit adımda ve resimlerle anlatmaya çalışacağım:

--oluşturduğumuz database adının yazıldığı yere terstıkla/tasks/backup seçilir

--açılan ekranda backupın kaydedildiği yerin yolu vardır,isterseniz başka bir yere de kaydedebilirsiniz.

--ok dedikten sonra oluştuğuna dair mesaj gelir,artık backup oluşturmuşsunuz demektir.
--bir de başka bir yerden almış olduğunuz backupı yükleme işlemi vardır,yani restore işlemi
--sql serverda herhangi bir proje adını ters tıkla/tasks/database


--Daha önce backupı alınmış projenin yeri nerede ise o bulunur onaydan sonra proje sql serverda çalışmaya hazırdır.



DERYA GÜNDÜZ

11 Temmuz 2010 Pazar

STAJ GÜNLERİM.....

                    Yaklaşık 2 hafta önce BilgeAdam'da yazılım departmanında staja başladım.Yoğunluktan yazmaya pek fırsatım olmadı.Haftaiçleri Çağlar Hoca'nın Sql derslerine giriyorum.Okulun bitip stajın başlaması süresi arasında sqle biraz başlamıştım ama sqli kurup servera bağlanana kadar bile çok zorlanmıştım:)Temel sql komutlarına falan bakmıştım biraz,bişeyler öğrendiğimi sanmıştım ama kursa başlayınca aslında pek bişey öğrenmediğimi gördüm,meğer sql ne derinmiş arkadaş:)"select * from"dan ibaret değilmiş.Sql dersleri çok verimli geçiyor benim için,staj bitiminde sql de bayağı yol katedecem sanıyorum.Öğleden sonra da burda ders çalışıyorum ya da Sedat Hoca'nın yapmamı istedikleri olursa onları yapmaya çalışıyorum,araştırmalar ya da rapor falan yazmamı istiyor bazen.Ders çalışırken de takıldığım yerler olursa  hocalara soruyorum,hepsi çok yardımcı oluyor.Haftasonları Şevket Hoca'nın yeni başlayan grubu ile c# derslerine giriyorum.C#pı 1. dönem görmüştük okulda, ben de uğraşmıştım biraz ama unutmuşum gibi ve bilmediğim çokşey varmış.Burda bildiğimi sandığım birçok şeyi bilmediğimi gördüm,eksikler çok,çok çalışmak gerek:)Bir de staj oyunca biraz asp.net  öğrensem süper olacak,çalışmaya başladım,Ali Rıza Hoc^'nın videoları var ordan takip edecem,ne kadar öğrensem kar benim için.

           Burda şunu da gördüm,yazılım işini yapanların çok azı Bilgisayar Mühendisliği'nden mezun,hocalara ve öğrenci arakadaşlara baktığımda çok farklı bölümlerden mezun olduklarını görüyorum  ve bu işi çok iyi yapıyorlar.Yani işimiz zor biraz:)
           Kısacası BilgeAdam günlerim şuan için iyi gidiyor.Her geçen gün bişeyler öğrendiğimi hissedebiliyorum.
          


DERYA GÜNDÜZ

6 Temmuz 2010 Salı

SQL DE TRİGGERLAR(TETİKLEYİCİLER)

Trigger nedir?
Trigger'ın kelime anlamı tetikleyicidir,
Sqldeki anlamı da  database tabloları üzerinde bir değişiklik olduğu zaman çalışan sql sorgularıdır.
Triggerlar ile insert,update,delete yapılabilir.

Trigger oluşturmak
create trigger TriggerAdi
on TabloAdi
tetikleyici seçeneği(hangi olay olduğunda çalışsın)
as
select ....


creat trigger tg_KategoriSilindi
on Categories
 for delete             --category silinmesini takip ediyor
as
select 'biri bir tane kategori sildi' as silme                  ---verilecek mesaj


Yeni eklenecek olan çalışanın adını veoyadını ve aldığı ID değerini ekrana yazdıralım:


create trigger tg_CalisanEklendi
on Employees
for insert
as
declare @ad varchar(10)
declare @soyad varchar(10)
declare @id int
select @ad=FirstName,
@soyad=LastName,
@id=EmployeeID from inserted
declare @veri varchar(36)
set @veri=cast(@id as varchar(3))+' '+@ad+' '+@soyad
select @veri as veriyo

insert into  Employees(FirstName,LastName)
values('fulya','ayluf')                      
  --ekleme işlemini yapılacağı zaman trigger da çalışır ve ekleme işlemi






İnstead of Triggerlar
Triggerlar ile asıl yapılması gereken yerine başka bir iş yaptırmak istediğimizde instead of trigger kullanılır.
Bu örnekte silme işlemi yerine mesaj verdirtecez:

create trigger tg_KtegorileriKoruyalim
on Categories
instead of delete
as
select 'Kategorileri silemezsin!!!'  as mesaj
delete from Categories where CategoryID=1

İnsead of triggerların önemli kullanım alanlarından bir tanesi de viewler ile birlikte kullanmaktır,birden fazla kaynak tablo ile oluşturulmuş viewlerde insert,update,delete  işlemleri yapılmak istendiğinde instead of trigger kullanmak zorunda kalınıyor,aksi halde hata verir.


DERYA GÜNDÜZ

2 Temmuz 2010 Cuma

SQL'DE VİEW(SANAL TABLO) OLUŞTURMAK

View ler hangi durumlarda kullanılır,faydaları nelerdir?
Yapacağınız sql işleminde birden fazla tabloyu ve onların farklı farklı colonlarını kullanacaksınız,hepsini birleştirmek ,gerekli tablodan sorgu yapmak biraz zahmetli bir iş olabilir,bunun yerine view denen sanal tablolardan oluşturup,gerekli colonları farklı tablolardan alıp sorguları tek bir tablo üzerinden yapmak işinizi kolaylaştırailir.Karmaşık sorgular kolay bir hale gelmiş  olur.Ayrıca view kullanmanın çok önemli nedenlerinden bir tanesi sağladığı güvelikler.Tablolarınızın tamanının görünmesini istemediğiniz zamanlarda  sanal tablo kullanıp tablolarınızın tamamının görünmesini engelleyebilirsiniz.
View ler üzerinde yapılan değişikler kendilerini oluşturan kaynak tabloları da etkiler,aynı değişiklikler kaynak tablolara da yansır.
Oluşturulan Viewler  resimde görüldüğü gibi  Object Explorer kısmında ana başlık altında toplanır


Viewler nasıl  oluşturulur?
create view vw_viewAdi
 --tavsiye olunur ki oluşturulan view adları vw_ ile başlasın,böylece veri tabanınıza yeni bakan biri onun view olduğunu kolayca alsın

as
select kolonAdi from tabloAdi
where şart

with check option
view oluştururken with check point ifadesi yazılırsa,tanımlamadaki where şartı muhafaza edilmiş olur where şartı dışındaki insert,update,delete işlemleri yapılmaz hata verir

                
create view vw_DogruHazirlanmisView
as
select firstname,lastname
from Employees
where FirstName like 'a%'
with check option

insert into vw_DogruHazirlanmisView values('derya','dd')
--eklenme yapılmak istendiğinde hata verir
hata:The attempted insert or update failed because the target view either specifies WITH CHECK OPTION or spans a view that specifies WITH CHECK OPTION and one or more rows resulting from the operation did not qualify under the CHECK OPTION constraint.(with check pointten dolayı 'a' ile başlamayan bir ekleme yapılamaz)

with Schemabinding
Viewin oluşturulduğu kaynak tablo üzerinde değişiklik yapılmasına izin vermeyecek.


create  view vw_CokUgrastim
with schemabinding          --sütunla ilgili bir değişiklik yapılamıyor
as
select firstname,lastname,city
 from dbo.employees  --dbo. olmalı
drop table Employees          --yazıldığında hata verir
hata:Could not drop object 'Employees' because it is referenced by a FOREIGN KEY constraint.


with encription(gizli view)
Kaynekların  gizliliğini sağlayan koddur,kullanıcı sadece oluşturulan view ile ilgili verilere erişebiliyor,kaynak tablolarla ilgili hiç bir bilgiye ulaşamıyor.



create view vw_Benim
with encryption   --kaynak görmeme,design aktif değil
as
select * from products


Resimde de görüldüğü gibi gizli view kullanıldıktan sonra viewin üstünde kilit işareti olur ve 'modify' seçeneği aktiif değildir.


DERYA GÜNDÜZ

29 Haziran 2010 Salı

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
 
Facebook

Bizi takip edin!

ESOGÜ Bilişim GünleriESOGÜ Bilişim Günleri