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

13 Nisan 2009 Pazartesi

ASP.NET te En Basit INSERT Cümlesi

Bir yazılımda veri tabanı kullanıyorsak olmazsa olmazımız bu veritabanına veri eklemektir. Ben burada iki şekilde insert cümlesi yazmayı anlatmaya çalışacağım.

Birincisi en temel sayılan direkt yazılımın içine yazdığımız INSERT cümlesidir.


Veri Kaydetmek istediğimiz butonun altına aşağıdaki kodu yazıyoruz.

using System.Data.SqlClient; //Bunu eklemeyi unutmayın

SqlConnection con = new SqlConnection("server=.\\sqlexpress;database=databaseadımız;uid=varsakullanıcıadımız;pwd=varsaşifremiz"); //Connection cümlemizi yazıyoruz ve programın hangi veritabanına bağlanacağını ve varsa veritabanımızın kullanıcı adı ve şifresini belirtiyoruz.

string ekle = "insert into tblbilgileri(Ad,Soyad,Adres,Yas) Values ('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "','" + TextBox4.Text + "')"; // Burada yazdığımız cümleyi direkt SqlDataAdapter içinede yazabiliriz. Ben  burada insert cümlesini bir string değişkene atayıp oradan SqlDataAdapter içine aldım. Siz dilerseniz bu string değişkenini tanımlamayıp, insert cümlesini direkt DataAdapterda yer alan ekle kısmına yazabilirsiniz.

SqlDataAdapter sadp = new SqlDataAdapter(ekle,con); // Daha Sonra bir DataAdapter belirliyoruz...

DataAdapter Nedir?

DataAdapter nesnesi Connected ve Disconnected bağlantı yapısı ile veri arasında köprü vazifesi görür. Veritabanınızdan çektiğiniz veriyi DataSetinize doldurmak yada DataSetinizde güncellenerek cachelenmiş verilerinizi veri kaynağınızda da güncellemek için istediğiniz zaman DataAdapter nesnesini kullanabilirsiniz. Güncelleme işlemlerini daha ileri konuları içeren makalelerimizde göreceğiz. Konuyu daha fazla dağıtmamak için şu anda bu nesnenin DataSet ile kullanımı ve veriye erişim konuları üzerinde yoğunlaşmalıyız.

Bilmeniz gereken bir-iki ufak ayrıntı da şunlar:
- DataAdapter Disconnected Data ile çalışmak için tasarlanmıştır.
- DataAdapter ve DataSet arasında direkt olarak bir bağlantı yoktur.

DataAdapter ile DataSete veri doldurulurken database bağlantısı kapalı ise açılır, dataset doldurulur ve işlem bittiği anda otomatik olarak kapatılır. Eğer bağlantı halihazırda açıksa herhangi bir hata vermeden işlemi yapar ve bağlantıyı kapatarak işlemini sonlandırır. Böylece bizlerin de fazla detayla uğraşmadan hızlıca işlemlerimizi yapmamızı sağlar.

Kullanımına gelince; Temelde iki adet argüman alır. Bunlardan birincisi DataSete doldurmak istediğimiz veriyi belirten “SELECT * from Nothwind” gibi bir SQL cümlesidir. Ikincisi ise bağlantıyı açıp veriyi almasını ve bağlantıyı kapatmasını sağlayan Connection String adını verdiğimiz databasee bağlantı cümlesidir. Son olarak DataSete veriyi doldururken de Fill() methodu kullanılır.


DataSet ds = new DataSet(); 
sadp.Fill(ds); // DataAdapter ımızı Dataset imize dolduruyoruz ediyoruz.
Response.Write("Veri Eklendi");
// Ekrana Veri Eklendi Yazıyoruz
foreach (Control c in this.Page.Form.Controls)
  {
         if (c is TextBox)
      {
         ((TextBox)c).Text = string.Empty;
       }
  }            
// Bu kod veri eklendikten sonra Textboxları temizliyor.


Kodu baştan ytazarsak şu hale geliyor.

using System.Data.SqlClient;

SqlConnection con = new SqlConnection("server=.\\sqlexpress;database=databaseadımız;uid=varsakullanıcıadımız;pwd=varsaşifremiz");

string ekle = "insert into tblbilgileri(Ad,Soyad,Adres,Yas) Values ('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "','" + TextBox4.Text + "')";

SqlDataAdapter sadp = new SqlDataAdapter(ekle,con);

DataSet ds = new DataSet(); 
sadp.Fill(ds);
Response.Write("Veri Eklendi");

foreach (Control c in this.Page.Form.Controls)
  {
         if (c is TextBox)
      {
         ((TextBox)c).Text = string.Empty;
       }
  }  

İkincisi ise bir Class kullanarak veri kaydetme yoludur. 

Öncelikle App_Code klasörüne sağ tıklıyoruz ve Add New Item diyoruz. Karşımıza çıkan pencereden bir Class seçiyoruz. Adına verigetir diyoruz ve Add butonuna basarak class ımızı ekliyoruz.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;

///


/// Summary description for VeriGetir
///

public class VeriGetir
{
  static SqlConnection con = new SqlConnection("server=.\\sqlexpress;database=databaseadımız;uid=varsakullanıcıadımız;pwd=varsaşifremiz");
  public DataTable dt = new DataTable();
 public VeriGetir(string query)
 {
  SqlDataAdapter da = new SqlDataAdapter(query, con);
  da.Fill(dt);
 }
  public static int verikaydet(string query)
  {
  if (con.State != ConnectionState.Open)
  {
  con.Open();
  }
  SqlCommand com = new SqlCommand(query, con);
  return com.ExecuteNonQuery();
  }
}

Class ımıza yazacağımız kodları yukarıda verdim. Bu Class sayesinde hem Select hende Insert işlemlerimizi yapabiliriz. Önece bir insert işlemi yapalım.

Yine veri kaydedeceğimiz butona tıklıyoruz ve kod sayfasına şu kodu yazıyoruz.

using System.Data.SqlClient; // Bunu eklemeyi unutmayın

VeriGetir.verikaydet("insert into tblbilgileri(Ad,Soyad,Adres,Yas) Values ('" + TextBox5.Text + "','" + TextBox6.Text + "','" + TextBox7.Text + "','" + TextBox8.Text + "')");

foreach (Control c in this.Page.Form.Controls)
  {
  if (c is TextBox)
  {
  ((TextBox)c).Text = string.Empty;
  }
  }

Bukadar. Sadece tek satır Insert cümlesiyle veri kaydetme işlemini gerçekleştiriyoruz.

Aynı şekilde select cümlemizi yazarkende
VeriGetir ver = new VeriGetir("select * from tabloadi");

İşte bukadar Class kullanmak yazılımlarınıza hem hız kazandırır hemde kodları okurken daha rahat edersiniz.