Veri tabanındaki kaydı düzenleme-güncelleme C# ders 74
Veri tabanındaki kaydı düzenleme C# Ders 74
Daha fazla bilgi için : www.gorselprogramlama.com
Veri tabanındaki kaydı düzenleme: Düzenleme işlemi için kullanılan sql kodu Update’dir.
Kullanımı : Update tablo ismi Set alanlar ve yeni değerleri where şart
Update ogrbil Set adi=’veli’ where nosu=’20’ ->20 nolu kaydın adını veli olarak güncelle.
Örnek: Bu örneğimizde öğrencinin kaydını ve güncelleme işlemini ayrı formlarda yapalım.İki form daha ekleyelim projemize.Form2’de kayıt işlemini , Form3’de güncelleme işlemini yapalım.Butonlarımıza icon veya resim ekleyelim.Buton ismine göre internetten icon veya resim arayın ve bilgisayarınıza kaydedin.Formumuza imagelist ekleyelim.Imagelist seçip yanındaki sağ ok — Choose image–Add tıklayıp icon veya resmi ekleyin.Butonları büyültün.Butonların textAlign’nini properties’ten aşağı olarak ayarlayın. Butonu seçip properties’ten imagelist’ni imagelist1 seçiyoruz.ImageKey’nide hangi resmin olmasını istiyorsak onu seçiyoruz.ImageAlign’de yukarı seçiyoruz.Tüm butonlarda işlemleri bu şekilde yapıyoruz.Sonuç aşağıda.



Form1’e yazılacaklar
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
{ // Daha fazla bilgi için : www.gorselprogramlama.com
public partial class Form1 : Form
{
public Form2 frm2;//form2'yi tanımlıyoruz
public Form3 frm3;
public Form1()
{
InitializeComponent();
frm2 = new Form2();//form2'yi oluşturuyoruz.
frm3 = new Form3();
frm2.frm1 = this;
frm3.frm1 = this;
} // Daha fazla bilgi için : www.gorselprogramlama.com
public OleDbConnection bag = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=data.accdb");
public DataTable tablo = new DataTable();
public OleDbDataAdapter adtr = new OleDbDataAdapter();
public OleDbCommand kmt =new OleDbCommand();
//public olarak tanımladımki diğer formlarda ulaşabileyim.
public void listele()
{
tablo.Clear();
bag.Open();
OleDbDataAdapter adtr = new OleDbDataAdapter("select * From ogrbil", bag);
adtr.Fill(tablo);
dataGridView1.DataSource = tablo;
adtr.Dispose();
bag.Close();
} //Daha fazla bilgi için : www.gorselprogramlama.com
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ı";
}
private void musteriKayit_Click(object sender, EventArgs e)
{ // Daha fazla bilgi için : www.gorselprogramlama.com
frm2.ShowDialog();//form2'yi ekrana getirir.showDialog yaparsanız bu formu kapatmadan form1'e ulaşamazsınız.
//İsterseniz frm2.Show 'da yazabilirsiniz. Show derseniz açılan formu kapatmadan da form1'e ulaşabilirsiniz.
}
private void sil_Click(object sender, EventArgs e)
{
try
{
DialogResult cevap;
cevap = MessageBox.Show("Kaydı silmek istediğinizden eminmisiniz", "Uyarı", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (cevap == DialogResult.Yes)
{
kmt.Connection = bag;
bag.Open();
kmt.CommandText = "delete from ogrbil where nosu='" + dataGridView1.CurrentRow.Cells[0].Value.ToString() + "'";
kmt.ExecuteNonQuery();
bag.Close();
listele();
}
}
catch (Exception hata)
{
MessageBox.Show(hata.Message);
}
} // Daha fazla bilgi için : www.gorselprogramlama.com
private void musteriDuzenle_Click(object sender, EventArgs e)
{
frm3.ShowDialog();
}
private void cikis_Click(object sender, EventArgs e)
{
Close();//Projeyi Kapat.Bunun yerine Application.Exit(); kodunuda kullanabilirsiniz.
}
}
}
Form2’ye yazılacaklar
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;
namespace veritabani_baglanti
{
public partial class Form2 : Form
{
public Form1 frm1;
public Form2()
{
InitializeComponent();
} // Daha fazla bilgi için : www.gorselprogramlama.com
private void cikis_Click(object sender, EventArgs e)
{
this.Close();
}
private void kaydet_Click(object sender, EventArgs e)
{
if (textBox1.Text.Trim() != "" && textBox2.Text.Trim() != "" && textBox3.Text.Trim() != "" && textBox4.Text.Trim() != "")
//textboxların boş geçilmesini önlüyoruz.
{
frm1.bag.Open();
frm1.kmt.Connection = frm1.bag;
frm1.kmt.CommandText = "INSERT INTO ogrbil(nosu,adi,soyadi,sinifi) VALUES ('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "')";
frm1.kmt.ExecuteNonQuery();
frm1.kmt.Dispose();
frm1.bag.Close();
frm1.listele();
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
MessageBox.Show("Kayıt işlemi tamamlandı ! ");
} // Daha fazla bilgi için : www.gorselprogramlama.com
else
{
MessageBox.Show("Boş alanları doldurunuz !!!");
}
}
}
}
Form3’e yazılacaklar
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;
namespace veritabani_baglanti
{
public partial class Form3 : Form
{
public Form1 frm1;
public Form3()
{
InitializeComponent();
}
private void Form3_Load(object sender, EventArgs e)
{ // Daha fazla bilgi için : www.gorselprogramlama.com
textBox1.Text =frm1.dataGridView1.CurrentRow.Cells[0].Value.ToString();
//datagridview'de seçili satırı gerekli textboxlara yazdırıyoruz.Form3 açıldğında bilgiler otomatik textboxlara yazılmış oluyor.
textBox2.Text =frm1.dataGridView1.CurrentRow.Cells[1].Value.ToString();
textBox3.Text =frm1.dataGridView1.CurrentRow.Cells[2].Value.ToString();
textBox4.Text =frm1.dataGridView1.CurrentRow.Cells[3].Value.ToString();
//seçili olan sıfırıncı hücre textbox1'e , seçili olan birinci hücre textbox2'ye, seçili olan ikinci hücre textbox3'e seçili olan üçüncü hücre textbox4'e yaz.
}
private void kaydet_Click(object sender, EventArgs e)
{
try
{ // Daha fazla bilgi için : www.gorselprogramlama.com
frm1.bag.Open();
frm1.kmt.Connection = frm1.bag;
frm1.kmt.CommandText = "UPDATE ogrbil SET nosu='" + textBox1.Text + "',adi='" + textBox2.Text + "',soyadi='" + textBox3.Text + "',sinifi='" + textBox4.Text + "' WHERE nosu='" + frm1.dataGridView1.CurrentRow.Cells[0].Value.ToString() + "'";
//Şart bölümüne istenirse textbox1'de yazılabilir.
frm1.kmt.ExecuteNonQuery();
frm1.kmt.Dispose();
frm1.bag.Close();
frm1.listele();
this.Close();
}
catch
{
;
}
} // Daha fazla bilgi için : www.gorselprogramlama.com
private void cikis_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
67 nolu öğrenci seçili iken Öğrenci Düzenle butonuna tıklyoruz.Aşağıdaki gibi açılan form2’de bilgiler textboxlarda gözüküyor.

durmaz soyadını silip yerine aslan yazalım ve Kaydet butonuna tıklayalım.

Aşağıda gördüğümüz ali adlı öğrencinin soyadı aslan olarak güncellenmiştir.

Dersin videolu anlatımı ve anlatımda yapılan projeyi indirmek için



sayın admin.
çok teşekkür ederim.
Bunları benim yapacağıma inanamıyorum. resmen program.
Şimdiden kendimi programcı zannettim. (sayenizde)
Teşekkürler….
sizin gibi usta programcılar sayesinde veritabanıyla ilgili bir çok bilgi öğrendim veritabanı ekleme silme gibi bir çok konular yayınladınız birde sizden ricam veritabanında arama ile konu yayınlarsanız çok sevinirim bizim gibi acemiler de sizin sayenizde prof. programcı olablir..
arama işlemi yayınlandı link : http://www.gorselprogramlama.com/textboxa-girilen-karakterlerin-bulundugu-kaydi-datagridviewde-gosterme-c-net-ders75
admin abi paylaşımlarınız çok güzel çok beğeniyorum
abi sizden bi ricam olacak benim bi dönem ödevim var vb.net2005 te ders programı yapma programı yapacam bana yardım edebilirmisiniz iyi çalışmalar kolay gelsin
proje isteklerinizi gorselprogram@gmail.com adresine mail atın.
projeyı aynen derledım ancak form 2 de eklemeyı yaparken
Nesne başvurusu bir nesnenin örneğine ayarlanmadı hatası verıyor ve frm1.baglan.open() dızınını gosterıyor? yardımcı olurmusunuz
ayrıca form3 ten frm1.datagridviewi tanımıyor
1- datagridView1’i seçtikten sonra properties’ten Modifiers özellğini Public yap.
2- form1 hariç diğer formlarda örnek form2’de public Form2() den önce public Form1 frm1; yazmalısın.
tesekkur ederım 🙂
İndirme linki koyabilirmisiniz?
Merhaba hocam. form1 de de tanımladığım ” bag.Open(); ” from2 de frm1.baglan(); çıkmıyor.
fakat
1- datagridView1′i seçtikten sonra properties’ten Modifiers özellğini Public yap.
2- form1 hariç diğer formlarda örnek form2′de public Form2() den önce public Form1 frm1; yazmalısın.
”
Yukarıdaki işlem from2 de frm1.datagridView1 gözüktü sebep ne olabilir
1- bag.Open ise frm1.bag.Open demelisin . sen baglan yazmışsın.
2- public demek tüm formlarda görebilirsin demek.o yüzden public dersen tüm formlarda görebilirsin.Mesela form1 deki dataGridView1 public yaptığımızda her formda frm1.dataGridView1 diye gözükür.Ama Private olarak bırakırsan başka formda form1deki dataGridView1’i göremezsin.
hazır proje olarak yok mu bu programın ?
sql ‘ i kullanarak yazdım 2 hata verdi;
1. düzenleye tıkladıgımda,
textBox1.Text =frm1.dataGridView1.CurrentRow.Cells[0].Value.ToString(); satırını yanlış nesne kullanımı falan diye sarıya boyuyor.
2. textboxları girip kaydet dediğimde,
frm1.kmt.ExecuteNonQuery(); satırını kırmızıya boyuyor. Neden olabilir???
hataları renk olarak değil sözel olarak yazman gerekir.
1- form1 deki datagiridview1 i seç.Properties ten Modifer özelleğini Public yap.
2 frm1 deki kmt komut değişkenin public olması gerektiğine dikkat et.
comboBox1.Text = frm1.dataGridView1.CurrentRow.Cells[0].Value.ToString();
bu satır şu hatayı veriyor; Nesne başvurusu bir nesnenin örneğine ayarlanmadı.
neden?
konu dışı bir sorum olacak. picturebox’a link atayabiliyormuyuz? yani picturebox’a tıklandıgında bi web sitesine yönlendirme durumu var mı?
Aşağıdaki kodların neresinde hata var bir türlü çalışmıyor….
tablo adı “odeme” yenilenecek alan “durum” sütununda seçili olan alan…
private void button1_Click(object sender, EventArgs e)
{
try
{
frm1.bag.Open();
frm1.kmt.Connection = frm1.bag;
frm1.kmt.CommandText = (“UPDATE odeme SET durum='” + comboBox1.Text + “‘ WHERE durum='” + frm1.dataGridView1.CurrentRow.Cells[0].Value.ToString() + “‘”);
frm1.kmt.ExecuteNonQuery();
frm1.kmt.Dispose();
frm1.bag.Close();
frm1.listele();
this.Close();
}
catch
{
}
}
try bloğunu kaldırıp hata mesajını yazarsanız yardımcı oluruz.
ben dznle için aynı kodları yazdım ama Nesne başvurusu bir nesnenin örneğine ayarlanmadı
diyor bana yardım eder misiniz
formlar arası geçiste eksik kod kullanmış olabilirsin.
Merhabalar. Öncelikle bu güzel ders için teşekkür ederim. dataGridView ‘ de seçilen satırı güncelle deyince Nesne başvurusu bir nesnenin örneğine ayarlanmadı gibi bir hata alıyorum. Nedeni nedir acaba? Kodları eksiksiz yaptığımı düşünüyorum.
formlar arası geçiste kodlardan birini yazmamış olabilirsin.
konuda farklı birşey sorucagım ben muhtarlıkla ilgili program yapıyorum acaba bana yardım edebilir misiniz
Hocam şimdi
önrek olarak verdim
textbox1.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString(); böyle bir kodum var
ancak bu kod sayısal ve kodlarım arasında parabirimi tarih gibi alanlarda var ve şöyle bir hata alıyorum :
cannot implicitly convert type ‘string’ to ‘system.windows.forms.textbox’
aldığım hata altta resimde var
http://g1205.hizliresim.com/x/3/57lx7.jpg
merhaba bnm ödevim stok takip programı manav ekle sil.kayıt_ara,guncelle butun programları yaptm sadce -10 geldiginden kendiliginden stoktan düşmesi lazım ama orda takıldım yapamadım lutfen bana yardımcı olurmusun sizden rca ediyorm acilllll
sabriye : proje isteklerinizi ve eklentileri gorselprogram@gmail.com adresine mail atınız.
Programı tamamen yaptım fakat duzenle dedigim zaman veritabanındaki butun nesneleri düzenliyor.. bunu nasıl duzeltebilirim ?
where den sonra no’ya göre şartlı güncelleme yapmalısın.
bazı satırlardaki kodlar ekranin sağ tarafından sonrasi gözükmüyor admin yardımcı olursan sevinirim
@BATUHAN
Yukarıdaki video linkine giderek projeyi indirebilir ve kodları daha rahat görebilirsin.Veya görünmeyen bölümü bloklama yaparak kopyalayabilirsin.(Seç-Kopyala-word’ yapıştır.).Veya mozilla ile linki aç.Sorun çözülüyor.
textBox1.Text = frm3.dataGridView1.CurrentRow.Cells[0].Value.ToString();
textBox2.Text = frm3.dataGridView1.CurrentRow.Cells[1].Value.ToString();
textBox3.Text = frm3.dataGridView1.CurrentRow.Cells[2].Value.ToString();
textBox4.Text = frm3.dataGridView1.CurrentRow.Cells[3].Value.ToString();
bu satırları yazdığımda
” KütühaneTakip1.Form3.dataGridView1′ is inaccessible due to its protection level ”
hatasını alıyorum sorun nerde acaba ?
private void btnGuncelle_Click(object sender, EventArgs e)
{
if (textBox1.Text.Trim() != “” && textBox2.Text.Trim() != “” && textBox3.Text.Trim() != “” && textBox4.Text.Trim() != “” && textBox5.Text.Trim() != “” && textBox6.Text.Trim() != “”)
{
string sorgu = “UPDATE bil SET Adi='” + textBox1.Text + “‘,Dom='” + textBox2.Text + “‘,Dns='” + textBox3.Text + “‘,uzanti='” + textBox4.Text + “‘,sonTarih='” + textBox6.Text + “‘,Host='” + textBox5.Text + “‘ WHERE id=” + id;
OleDbCommand kmt = new OleDbCommand(sorgu, bag);
bag.Open();
kmt.ExecuteNonQuery();
kmt.Dispose();
bag.Close();
listele();
MessageBox.Show(“Güncelleme İşlemi Tamamlandı !”, “Bilgi”, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show(“Boş Alan Bırakmayınız !”);
}
}
kodlarım bu şekilde fakat çalışmıor , neden ?
@cennet:
Bu haliyle hata gözükmüyor.Hata mesajını yazarsanız daha sağlıklı olur.
kullanıcı adi şifre nedir hocam?
tamamdır şifreyi yanlış girmişim bende farklı bişey sandm. Elinize sağlık program 10 numara
pardon projeyi indirme linkini bulamadım