Bu yazımda C# ile Sql Server veritabanına kayıt eklemeyi detaylı olarak anlatmaya çalışacağım. Tüm veritabanı işlemlerini aynı makale içerisinde anlatmaktansa parçalara bölerek satır satır detaylarıyla anlatmanın daha faydalı olacağını düşündüğüm için bu yazımda sadece veritabanı oluşturma ve kayıt ekleme işlemlerini anlatacağım. Bir çok yerde hala parametre kullanmadan kayıt ekleme işlemleri anlatılmaktadır. Bu eski yöntem güvenlik açıklarına sebep olmakta birlikte kod karmaşası yaratmakta ve anlaşılabilirliği azaltmaktadır.
Örneğimizi müşteri bilgilerini veritabanına kayıt etmek üzerine yapacağız. Öncelikle Sql Server üzerinde MusteriTakip isminde bir veritabanı ve veritabanı içerisinde musteriler isminde bir tablo oluşturalım.
Tablomuzu oluştururken dikkat etmemiz gereken nokta musterino alanını PrimaryKey olarak belirlemek ve artış miktarını otomatik artacak şekilde ayarlamak. Eğer bu konuda bilginiz yoksa musterino alanını seçtikten sonra Column Properities kısmından ayarları aşağıdaki gibi değiştiriniz. Bu şekilde kaydettiğimiz müşterilere birer birer artacak şekilde bir müşteri numarası atanacak.
Veritabanı ve tablomuzu oluşturduk. Şimdi yeni bir Windows Form Application oluşturarak Formumuzu aşağıdaki gibi dizayn edelim.
Formumuzu da hazırladığımıza göre şimdi kodlarımızı yazamaya başlayabiliriz. Öncelikle aşağıdaki 2 satır projenizde ekli değilse en üste referans olarak eklemeyi unutmayın.
using System.Data;
System.Data; Ado.Net’in en temel isim alanıdır. Veriyi sembolize eden tablo, satır, sütun, koşul, datatable ve dataset gibi kavramlar bu isim alanı içerisinde yer alırlar.
using System.Data.SqlClient;
Bu isim alanı ise SQL Server için geliştirilmiş sınıfları kullanamaya olanak sağlar.
Kodların nasıl çalıştığıyla ilgili detayları kod aralarına açıklama olarak ekledim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
using System; using System.Data; using System.Data.SqlClient; using System.Text; using System.Windows.Forms; namespace MusteriTakipProgrami { public partial class Form1 : Form { public Form1() { InitializeComponent(); } static string conString="Server=Kutlay-;Database=MusteriTakip;Uid=sa;Password=kutlay;"; //Bu veritabanına bağlanmak için gerekli olan bağlantı cümlemiz.Bu satıra dikkat edelim. //Sql Servera bağlanırken kullandığımız bilgileri ve veritabanı ismini yazıyoruz. SqlConnection baglanti = newSqlConnection(conString); //bağlantı cümlemizi kullanarak bir SqlConnection bağlantısı oluşturuyoruz. private void btnKaydet_Click(object sender, EventArgs e) { //Hataları engellemeye yönelik olarak, tüm veritabanı işlemlerini try-catch blokları arasında yapmaya özen gösterin. try { if(baglanti.State==ConnectionState.Closed) baglanti.Open(); // Bağlantımızı kontrol ediyoruz, eğer kapalıysa açıyoruz. string kayit = "insert into musteriler(tcno,isim,soyisim,telefon,adres) values (@tcno,@isim,@soyisim,@telefon,@adres)"; // müşteriler tablomuzun ilgili alanlarına kayıt ekleme işlemini gerçekleştirecek sorgumuz. SqlCommand komut = newSqlCommand(kayit, baglanti); //Sorgumuzu ve baglantimizi parametre olarak alan bir SqlCommand nesnesi oluşturuyoruz. komut.Parameters.AddWithValue("@tcno", txtTc.Text); komut.Parameters.AddWithValue("@isim", txtIsim.Text); komut.Parameters.AddWithValue("@soyisim", txtSoyisim.Text); komut.Parameters.AddWithValue("@telefon", txtTelefon.Text); komut.Parameters.AddWithValue("@adres", txtAdres.Text); //Parametrelerimize Form üzerinde ki kontrollerden girilen verileri aktarıyoruz. komut.ExecuteNonQuery(); //Veritabanında değişiklik yapacak komut işlemi bu satırda gerçekleşiyor. baglanti.Close(); MessageBox.Show("Müşteri Kayıt İşlemi Gerçekleşti."); } catch (Exception hata) { MessageBox.Show("İşlem Sırasında Hata Oluştu." + hata.Message); } } } } |
Allah sizden razı olsun proje ödevimdi kimse yardım etmiyordu çok teşekkür ederim
hocam ellerine sağlık çok iyi bi anlatım olmuş
S.a hocam benim bu konu hakkında bir kaç sorum olacak çok acil pazartesi sınavım var bana geri dönüş yapar mısınız formdaki arkadaşlardan da yardım bekliyorum açıkçası
çok küçük bir hatası var.
SqlCommand komut = newSqlCommand(kayit, baglanti);
satırında new SqlCommand olmalı arada bir boşluk var. bununla ilgili hataya düşen olursa
bu yöntemle çözebilirler.
kodlar için çok teşekkürler açıklamalar yararlı.
Hocam ben tamtersını yapmak istyorum.yani textbox olusturup her olusan texttboxa gore sgl de yenı bır column olusmasını istyorum.yani diyelin button 1 e her tıklandıgında bır textbox olusacak daha sonra bu textboxa gırelen değeri button 2 ye tıkladıgımda sql de yeni bir column olusup verıyı buraya kaydedecek.nasıl yapablrm
button2 kısmı nasıl olacak saygılarımla
Merhabalar,
SQL bağlantısını bir türlü kuramadım.
“Sunucuyla bağlantı kurulurken ağ ile ilgili veya örneğe özel bir hata oluştu. Sunucu bulunamadı veya sunucuya erişilemiyor. Örnek adının doğru olduğunu ve SQL Server’ın uzak bağlantılara izin verdiğini doğrulayın. (provider: Adlandırılmış Kanal Sağlayıcısı, error: 40 – SQL Server için bağlantı açılamadı)”
Şeklinde hata veriyor.
Additional information: System.Web.Services.Protocols.SoapException: Sunucu isteği işleyemedi—> System.Data.SqlClient.SqlException
bu hatayı alıyorum. Sorun
; cmd.ExecuteNonQuery() satında çıkıyor.
C# Windows Forms Application da kayıt ekledikten sonra verileri otomatik nasıl gösterebiliriz.
newSqlCommand bitişik yazsam da ayırsam da hatalı gösteriyor
bide SqlConnection baglanti = newSqlConnection(conString); deki (conString) hatalı gösteriyor
nasıl düzelte bilirim
newSqlConnection arasına boşluk koyman gerekiyor new SqlConnection olması gerekiyor
Dostum ellerine sağlık gerek açıklamalar olsun gerek kusursuz komut satırların olsun çok işe yaradı
TEŞEKKÜRLER…