Veri tabanına kayıt ekleme C# Ders72
Veri tabanına kayıt ekleme C# Ders72
Daha fazla bilgi için : www.gorselprogramlama.com
OleDbCommand Sınıfı : Komut işlemlerinin yapıldığı sınıftır.
Connection Özelliği : Bağlantıyı öğrenmek içn kullanılır.
CommandText Özelliği :Sql kodunu öğrenmek içn kullanılır.
ExecuteNonQuery Özelliği : CommandText ile yazılan sorguyu gerçekleştirmek için kullanılır.
Örnek : Aşağıdaki veri tabanı alanlarını access 2007’de oluşturun ve projenizin bin— debug klasörüne kaydedin.Veri tabanımızda 4 adet alan olduğu için forma 4 adet textbox,4 adet label,1 adet dataGridView,1 adet buton ekliyoruz.


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.OleDb;
namespace veritabani_baglanti
{
public partial class Form1 : Form
{ //Daha fazla bilgi için : www.gorselprogramlama.com
public Form1()
{
InitializeComponent();
}
OleDbConnection bag = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=data.accdb");
DataTable tablo = new DataTable();
OleDbDataAdapter adtr = new OleDbDataAdapter();
OleDbCommand kmt =new OleDbCommand();
void listele()
{ //Daha fazla bilgi için : www.gorselprogramlama.com
tablo.Clear();
bag.Open();
OleDbDataAdapter adtr = new OleDbDataAdapter("select * From ogrbil", bag);
adtr.Fill(tablo);
dataGridView1.DataSource = tablo;
adtr.Dispose();
bag.Close();
}
private void Form1_Load(object sender, EventArgs e)
{
listele();
dataGridView1.Columns[0].HeaderText = "No";
dataGridView1.Columns[1].HeaderText = "Adı";
dataGridView1.Columns[2].HeaderText = "Soyadı";
dataGridView1.Columns[3].HeaderText = "Sınıfı";
} //Daha fazla bilgi için : www.gorselprogramlama.com
private void kaydet_Click(object sender, EventArgs e)
{
bag.Open(); //ilk olarak bağlantıyı yani veri tabanımızı açıyoruz.
kmt.Connection = bag; //komutumuzun bağlantısını öğreniyoruz.
kmt.CommandText = "INSERT INTO ogrbil(nosu,adi,soyadi,sinifi) VALUES ('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "')"; //sql kodumuzu yazıyoruz.
kmt.ExecuteNonQuery(); yazılan sql kodunu gerçekleştiriyoruz.
kmt.Dispose(); //Burayı yazmak zorunda değilsiniz.Yazmazsanızda çalışır.Komutu kullanım dışı bırakıyor.
bag.Close(); Bağlantıyı kapatıyoruz.
listele(); //listele prosedürünü çağırıyoruz.
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
}
}
} //Daha fazla bilgi için : www.gorselprogramlama.com





Yukarıdaki kodlarda gözüktüğü gibi kayıt ekleme işlemi için kullanılan sql kodu INSERT INTO ‘dur.INSERT INTO’dan sonra tablo ismimizi yazıyoruz.Parantez içinde alan isimlerimizi yazıyoruz.Values yazıp parantez içinde textboxlarımızı yazıyoruz.1. textbox 1. alana 2. textbox 2. alana ..vb . kaydedilecek şekilde yazılmıştır.Yani textbox1 deki bilgi access dosyasındaki nosu alanına , textbox2’ye yazılan bilgi access dosyasındaki adi alanına … gibi yazılacaktır. textboxları yazarken tek tırnak , çift tırnak ve + içerisine almayı unutmayın.
Kullanım : tek tırnak çift tırnak artı textBox1.Text artı çift tırnak tek tırnak = ‘”+textbox1.Text+'”
Dersin videolu anlatımı ve anlatımda yapılan projeyi indirmek için



çok güzel bir ders olmuş.
elinize sağlık.
bul, sil, değiştir, kapat.
bunları da diğer derslerde yapar mısınız.
ya da bu derse ekler misiniz. bu dersin devamı olur.
saygılarımla.
ders olarak hepsini sırasıyla ekleyeceğim.
HOCAM DIGER KONULARDA MS-SQL SERVER DATABASE OLARAK KULLANMA SANSINIZ VAR MI?
modüllerde acccess olarak anlatıldığı için bizde access veri tabanı kullanarak anlatıyoruz.Ama access ile ms-sql arasında fazla fark yok.Hemen hemen aynısı.Önemli olan veri tabanını ms-sql de oluşturmak.oledb yerine sql kullanmak.Mesela OleDbConnection yerine SqlConnection , OleDbDataAdapter yerine SqlDataAdapter gibi.
Hocam merhabalar uygulamanız çok yararlı fakat programdan çıkıp tekrar girdiğimde access sıfırlanıyor. bununla ilgili ayrı bi kod mu yazmamız gerekmekte.
Saygılarımla… İyi çalışmalar
Hocam yine ben 🙂 hatayı buldum Using System.Linq’i yazınca kayıtta tutuyor. Fakat bundada sürekli hata veriyor. mesela formda bişey düzeltsem göstermiyor. Altında hep çizik var. Bu hatayı nasıl kapatabiliriz. İyi Çalışmalar
Bu kodları VB.Net te yapsak olur mu?
Çeviricileri kullanarak c#.net kodlarını vb.nete çevirebilirsin.Çevirici siteleri için http://www.gorselprogramlama.com/c-net-kodlarini-vb-net-e-cevirme linkine bak.
Yaparsanız vb de de olur 🙂
adı ComboBox1 ve ComboBox2 nin textlerinin birleşiminden olan tabloyu göstermek istiyorum onu nasıl yapacağım hakkında yardımcı olursanız sevinirim.
merhaba hocam
ben sqlce server la calisiyorum yukardaki ornegi sqlce ye cevirdim ornek calisti,ama program kapandiginda veritabaninda kayit olmamis gorunuyor.Gunlerdir bu sorunla ugrasiyorum ama bir turlu bulamadim cozumu .yardim eder misiniz?
kodu eksik yazıyor olabilirsin.Kodları buraya kopyala.Bakalım hataya.
en basitinden asagidaki kod textboxlardan girilen verileri veritabanina kaydetmeli kayit eklendi diyor,verileri cekebiliyorum ,ama program kapaninca veriler kayboluyor.
private void button1_Click(object sender, EventArgs e){
SqlCeConnection con = new SqlCeConnection(“Data Source=” + System.IO.Path.GetDirectoryName
(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + “\\AppDatabase1.sdf; Persist Security Info=False;”);
System.Data.SqlServerCe.SqlCeCommand cmd = new System.Data.SqlServerCe.SqlCeCommand(“insert into kisiler(ad,soyad)values(@ad,@soyad)”, con);
cmd.Parameters.AddWithValue(“@ad”, textBox1.Text);
cmd.Parameters.AddWithValue(“@soyad”, textBox2.Text);
con.Open();
int etkilenen = cmd.ExecuteNonQuery();
con.Close();
if (etkilenen == 1) {
MessageBox.Show(“kayit eklendi”);
}
}
private void button1_Click(object sender, EventArgs e){
SqlCeConnection con = new SqlCeConnection(“Data Source=” + System.IO.Path.GetDirectoryName
(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + “\\AppDatabase1.sdf; Persist Security Info=False;”);
System.Data.SqlServerCe.SqlCeCommand cmd = new System.Data.SqlServerCe.SqlCeCommand(“insert into kisiler(ad,soyad)values(@ad,@soyad)”, con);
cmd.Parameters.AddWithValue(“@ad”, textBox1.Text);
cmd.Parameters.AddWithValue(“@soyad”, textBox2.Text);
con.Open();
int etkilenen = cmd.ExecuteNonQuery();
con.Close();
if (etkilenen == 1) {
MessageBox.Show(“kayit eklendi”);
}
}
en basitinden asagidaki kod textboxlardan girilen verileri veritabanina kaydetmeli kayit eklendi diyor,verileri cekebiliyorum ,ama program kapaninca veriler kayboluyor.
private void button1_Click(object sender, EventArgs e){
SqlCeConnection con = new SqlCeConnection(“Data Source=” + System.IO.Path.GetDirectoryName
(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + “\\AppDatabase1.sdf; Persist Security Info=False;”);
con.Open();
System.Data.SqlServerCe.SqlCeCommand cmd = new System.Data.SqlServerCe.SqlCeCommand(“insert into kisiler(ad,soyad)values(@ad,@soyad)”, con);
cmd.Parameters.AddWithValue(“@ad”, textBox1.Text);
cmd.Parameters.AddWithValue(“@soyad”, textBox2.Text);
int etkilenen = cmd.ExecuteNonQuery();
con.Close();
if (etkilenen == 1) {
MessageBox.Show(“kayit eklendi”);
}
}
şöyle dene.
hocam ilginiz icin cok tesekkur ederim biraz gec cvp verdim kusura bakmayin. yine ayni sekilde eklendi diyor ama veritabaninda gorunmuyor.
hocam peki veritabanında “ahmet@gmail.com” mailli bir kullanıcı var . eklenmek istenen yeni kayıtta ahmet@gmail.com maili eklenmek istendiği zaman boyle bır kullanıcı adı zaten var dıye nasıl kontrol ettırebılırız c# de . bı yardımcı olablır mısnz
Hocam c# da girdiğimiz verileri nasıl veri tabanınm yoa atabiliriz? ama daha yeniyim Çok bir bilgim yok
Yardmlarınızı bekliyorum
Teşekkürler
C# VERİ TABANI BAĞLANTI KURMAK İSTİORM KAYIT İŞLEMLERİ İÇİN AMA FAZLA BİLGİM YOK
Video sitemizden görüntülü olarak dersleri izleyebilirsin.İlk izlemen gerek ders linki : http://csharpvideoluders.com/videos/veri-tabanina-kayit-islemi-1-bolum-c-c-sharp-accesss
Ben acces bağlantısını 2003 de kodlama yapıyorum siz 2007 de yapmıssınız benim kodlamada sıkıntı olurmu (“provider=microsoft.jet.4.0;data source”.mdb”) şeklinde yaptım bunun dışında farklı bir kod yok sanırım 2007 icin? Birde bu videoda kullandığınız 3 form arasında geçiş yapmıssınız panel şeklinde yani şifre girerek bana bu şekılde bir proje var projenın devamı varmı? varsa bilgilendirirseniz çok makbule geçer.
Mesela şurdaki dataGridvieW1 hatalı diyor yani kabul etmıyor böyle bir nesne yok diyor.
public void listele()
{
tablo.Clear();
baglan.Open();
OleDbDataAdapter adtr=new OleDbDataAdapter(“select * from tablo1”,baglan);
adtr.Fill(tablo);
DataGridView1.DataSource=tablo;
adtr.Dispose();
baglan.Close();
}
mesela bizim tanımladığımız void listelenin altındaki datagrid1 i kabul etmıyor. hata koduda bu:DataGridView1 does not exist in the current context
2007 ve 2003 için kodu aşağıdaki linkte bulabilirsin.Ayrıca konunun altında videolu anlatım linkine bakabilirsin.
link : http://www.gorselprogramlama.com/veri-tabanina-baglanma-c-net-ders-69/
Forma dataGridView eklemelisin.Ayrıca konunun altındaki video anlatım linkine bakabilirsin.
formda ekli diğer kısımlarda çalışıyor datagrid1 ama bizim kendi oluşturdugumuz listelede olmuyor nedenini anlayamadım.
datagrid değil dataGridView ekleyeceksiniz.İkisi farklı çünkü.
datagrid ben kısa olarak yazıyorum normalde ekli olan zaten dataGridView1 ama tek orda hata verdi.
Hata mesajının tamamını yazarmısın.
The name ‘DataGridView1’ does not exist in the current context hata mesajı bu çevirisi nesne ekli değil diyor ama nesne formda ekli niye böyle oldu anlayamadım defalarca kontrol ettim.
Kodlar ile dataGridView in aynı formda olduğuna dikkat et.Eğer kod ile dataGirdView farklı formlarda ise dataGridView in Modifers özelliğini Public yapmalısın.
Eywallah hocam düzeldi çok sağolasın emeğine sağlık.
Hocam
komutlar.ExecuteNonQuery();
kısmında hata veriyor yani hani şu dolgu rengi sarı oluyor ya öyle hata
lütfen hocam çıldırıcam diğer sitenizden bakarak yapmıştım zaten birde benimki visual studio 2005 ondan dolayı olabilirmi
Hatanın adını yazarsan yardımcı oluruz.Sorgu cümlesi yanlış olabilir.
iki tabloda aynı bolum var bu bolum de girilecek olan kayıt var mı yok mu kontrol edip yoksa kayıt edilecek nasıl yapabilirim ???
şu sorunuun yanıtını öğrenebilirmiyiz ?
sql de count komutunu kullanarak yapabilirsin.Zaman bulunca bununla ilgili bir örnek sitede yayınlamaya çalışırım.
Hocam acces 2003 te aynı şeyi yapmak istiyorum fakat;
bag.Open(); // ŞURADA HATA VERİYOR GALİBA 2007 NİN OLMAMASI NEDENİ VAR … ÇÖZÜMÜNÜ YAZARMISINIZ RİCA ETSEM ?
OleDbDataAdapter adtr = new OleDbDataAdapter(“select * From Kitaplarım”, bag);
adtr.Fill(tablo);
dataGridView1.DataSource = tablo;
adtr.Dispose();
bag.Close();
Muhammed:
Hatayı yazarsanız yardımcı oluruz.
baglantı.Open(); hatası verıo bende yardımcı olablirmsnz? uzerıne tıkladgmda
get general help for thisexception ne demk oluo bu? View Detaile tıkladığım zaman bu sorunu gsterio
{“The connection was not closed. The connection’s current state is open.”}
baglantı.open(); hatası verio sorun neden kaynaklanıo olabılır kayıt ekleme kodunu calıstrdgmda hta alıorm
merve:
Bağlantı zaten açık durumda.Programın bir yerinde açılmış ve kapatmayı unutmuş olabilirsin.Tabi kod olarak.
bağlantı hatası sorunu var …
sorun olmaması gerekiyor.
iyi günler anlatım için teşekkür ederim bir sorum olacaktı, bu örneğin aynısını sql server için nasıl yaparım?
yelüz:
Aşağıdaki linki incele.
http://www.gorselprogramlama.com/mssql-veri-tabanli-stok-takip-programi-c/
ben böyle bir proje yapmıştım fakat programı tekrar açtığımda kaydettiğim verilerin silindiğini gördüm bunun nedeni nedir ne yapmam gerekir , teşekkür ederim
Hocam ben kendim su kodlara uygun programi yazdim.Kaydet butonunu klikledigim zaman osibka v instrukciy INSERT INTO yaziyor ne yapabilirim ?
Emil :
Sorgu ifadesinde yanlışlık olabilir.Sorgunu kontrol et.
hacam benim 1 sorum olucak
benim databasem de 1 den fazla tablo olucak o zaman istediğim tabloya nasıl ekleme yapabilirim ?
yardımcı olursanz cok sevinirim
batuhan :
insert into ogrbil —> bu bölümde ogrbil bölümüne hangi tabloya ekleme yapmak istiyorsan o tablo ismini yazıyorsun.Tabiki alan isimlerinide ona göre yazman gerekir.
ama o zmanda şöyle bi sıkıntı meydane gelicek bu sefer ilk tabloma ekleme yapıcam
benm elimde kaç tane tablo olucağı belli olmıcak cunku database me surekli tablo eklene bilir o yuzden sıkıntı yasıyorum