#2 MSSQL Eğitim Seti Tabloya Veri Kaydetme - Insert

Ocak 26, 2017 Mustafa BÜKÜLMEZ 0 Yorum

2 - INSERT INTO


Selamlar,


MSSQL Başlangıç Eğitim Setimizin 2.dersi olan Insert konusundan devam ediyoruz.


Önceki dersimizde tablonun nasıl açılağından, genel stunlardan, tablo açılırken dikkat edilmesi gerekenlerden ve bir kaç püf noktadan bahsettik. Artık kayıtlarımızı kaydedelim.


Bu komut ile tablolarımıza birşeyler kaydederiz. Kullanımı basittir. Bu konuda verebileceğim pek bir püf nokta yok.


SQL server programında tablo üzerinde sağ tık yapıp "Script Table As" dediğinizde otomatik olarak tablo ile ilgili scriptleri oluşturabilirsiniz. Elle yazmanıza gerek yoktur.


Tablo üzerinde sağ tık / Scipt Table As / INSERT To / New Query Editor Window


yolunu izleyerek hazır sorguyu alabilirsiniz. Bize aşağıdaki gibi bir script verecektir.


INSERT INTO [dbo].[Kategoriler]

           ([Kat_Adi]

           ,[Kat_Tur]

           ,[Kat_Aciklama]

           ,[Kaydeden]

           ,[Kayit_Tarih]

           ,[Degistiren]

           ,[Degistirme_Tarih]

           ,[Silen]

           ,[Silme_Tarih]

           ,[Silindi]

           ,[Aktif])

     VALUES

           (

           ,

           ,

           ,

           ,

           ,

           ,

           ,

           ,

           ,

           ,)


Values kısmındaki yazıları insert edeceğimiz verileri aldığımız nesneleri yazıp sorgumuzu çalıştırıyoruz. SQL tarafında çalışan sorgu bu şekilde olacaktır.


INSERT INTO [dbo].[Kategoriler]

           ([Kat_Adi]

           ,[Kat_Aciklama]

           ,[Kaydeden]

           ,[Kayit_Tarih]

           ,[Degistiren]

           ,[Degistirme_Tarih]

           ,[Silen]

           ,[Silme_Tarih]

           ,[Silindi]

           ,[Aktif])

     VALUES

           ('Blog'

           ,'Açıklama'

           ,'Mustafa BÜKÜLMEZ'

           ,'20161029'

           ,''

           ,'20000101'

           ,''

           ,'20000101'

           ,0

           ,1)


Şimdi yukarıdaki örneği irdeleyelim.


1 - SQL de metin kaydetmek için tek tırnak kullanırız ( ' ' ) ancak veri türüne göre de tek tırnak kullanabiliriz. Örnekte gördüğünüz gibi tarih alanları da tek tırnak içerisindedir. Ama bu demek değil ki normal bir yazı kaydedilebilir. SQL de tarih kaydedebilmek için metnin bir tarih belirtmesi ve formatının YIL AY GÜN olması gerekmektedir. Ancak burada da bir ayrım var. Script kullanarak bu şekilde insert edebilirisiniz ama tabloyu açıp manuel güncellemek isterseniz de 29.10.2016 şeklinde yazmanız gerekir.


// DateTime1.Text.ToString("yyyyMMdd"));


Peki değiştirme tarihi ile silme tarihini neden öyle bir tarih yazdım ve değiştiren ve silen bilgisi neden boş?.


Tarihler konusunda ben tabloda "NULL" yazısını görmeyi sevmiyorum. Kontrol yapmam gerektiğinde NULL lardan arada kalanları göremiyorum. Bu sadece tarih verileri için değil boş bırakmama bende bir huy olmuştur. Çünkü bir arama yaptırmak istediğimde NULL alanlar yüzünden sıkıntı yaşadığım oldu zamanında....Kısacası tabloyu açtığımda NULL görmek istemememdir.


Şimdi söylemezdem olmaz. Programlamada ( '' ) bu boş değildir. Programalama gerçek boş alan NULL alandır. İki tek tırnak varsa bu da boştur ama ASCII listesinde de boşluk bırakmaya yarayan bir kod vardır. Yani bize göre boş ama bilgisayara göre boş değil. Çünkü o boşluğun bile bir karşılığı vardır.


Nesnelerden veri alarak nasıl yaparız ona da bakalım.


INSERT INTO [dbo].[Kategoriler]

           ([Kat_Adi]

           ,[Kat_Aciklama]

           ,[Kaydeden]

           ,[Kayit_Tarih]

           ,[Degistiren]

           ,[Degistirme_Tarih]

           ,[Silen]

           ,[Silme_Tarih]

           ,[Silindi]

           ,[Aktif])

     VALUES

           ('CMB_KATEGORI.SelectedText'

           ,'TXT_ACIKLAMA.Text'

           ,'Session["Kullanıcı_Adı"].ToString()'

           ,'20161029'

           ,''

           ,'20000101'

           ,''

           ,'20000101'

           ,0

           ,1)


Yukarıdaki örnekte asp.net projesi için verilmiş bir örnektir. (Session[""] asp.net'te var çünkü :) ) Ben projelerimde genel bir class kullanırım ve o class'ın içerisinde de değişkenler ile kullanıcı bilgilerini saklarım.


Global_System (Class'ımın Adı)


public static string KullanıcıAdi = "";


...


Tekrar bakalım,


INSERT INTO [dbo].[Kategoriler]

           ([Kat_Adi]

           ,[Kat_Aciklama]

           ,[Kaydeden]

           ,[Kayit_Tarih]

           ,[Degistiren]

           ,[Degistirme_Tarih]

           ,[Silen]

           ,[Silme_Tarih]

           ,[Silindi]

           ,[Aktif])

     VALUES

           ('CMB_KATEGORI.SelectedText'

           ,'TXT_ACIKLAMA.Text'

           ,'"+ Global_System.KullanıcıAdi+"  '

           ,'20161029'

           ,''

           ,'20000101'

           ,''

           ,'20000101'

           ,0

           ,1)


Diğer alanlar standart olarak bu şekildedir. İlgili işlemde gerekli yerleri güncellerim. İnsert işlemi yaparken bütün alanları bir kere doldurun.


INSERT işlemi yaparken verileri birleştirerek kullanabilirsiniz. Örn


 ,' " + Global_System.KullanıcıID + " ' + ' Kodlu ' + ' " +  Global_System.KullanıcıAdi + " '


şeklinde 2 farklı veriyi tek alana yazabilirsiniz.


Class'lardan da bahsettik. Eğer C# ile uğraşıyorsanız,




dersime göz atabilirisiniz.
http://mustafabukulmez.com/

0 Yorum: