Bu yazımızda C# Access veri tabanı bağlantısı kullanarak kayıt listeleme, kayıt ekleme, kayıt güncelleme ve kayıt silme işlemlerini gösteren Windows Form uygulaması oluşturacağız. Sayfada bu işlemi iki farklı şekilde gösteren iki örnek bulunmaktadır.
İkinci bağlantı örneğinin sonunda uygulamanın yapılışı ile ilgili videoda bulunmaktadır.
İlk örnekte bir arama kutusu kullanarak datagridview içinde filtreleme işlemi de gerçekleştireceğiz.
İlk olarak formumuzu aşağıdaki şekilde oluşturarak kaydedelim.
Formumuzda 5 adet textbox,1 adet datagridview, 3 adet buton ve 5 adet Label bulunmaktadır. Datagrid sütunlarını aşağıdaki şekilde düzenlemek isterseniz nasıl yapılacağı ile ilgili videoyu aşağıdaki link’e tıklayarak izleyebilirsiniz.
Veritabanı bağlantısı kurulduğunda DataGridView sütun başlıkları access veritabanı dosyasında tablodaki alan adları şeklinde gelecektir. (Ör: ograd-ogrsoyad vb.)
Eğer bu durum sizin için sıkıntıysa DataGridView sütun başlıklarının sizin belirlediğiniz şekilde görüntülenmesi de mümkündür. Alttaki Youtube videosu tasarım zamanında DataGridView sütunlarını nasıl düzeltebileceğiniz hakkında size yardımcı olacaktır.
C# datagridview sütunları düzenleme videosu için tıklayın.
Örneğimizi geçelim.
TextBox ların Name özelliğini sırasıyla tbno, tbad, tbsoyad ve tbtel olarak değiştirelim.
Daha sonra “okul.accdb” isminde bir veritabanı dosyası oluşturarak projemizin “debug” klasörü içine atalım ve içine aşağıdaki şekilde “ogrenci” tablomuzu oluşturalım.
Aşağıda programımıza ait kodlar bulunmaktadır. Bu kodları inceleyecek olursak griddoldur metodu oluşturularak datagridviewin içeriğinin verilerle doldurulduğunu görüyoruz. Bunu metot içinde yapmamızın amacını programda bir kaç yerde kullanacağımız için aynı kodları tekrar yazmamak olarak açıklayabiliriz.
Form_Load olayına yani form yüklendiği anda verilerimizin datagridview’ de görüntülenmesini istediğimiz için griddoldur metodunu öncelikle buraya ekledik.
Buton1‘ e bastığımızda kayıt ekleme işlemini gerçekleştirdik. Kayıt ekleme işlemi gerçekleştirdikten sonra datagridin güncellenmesini sağlamak için tekrar griddoldur metodunu çağırdık.
Button3 te öğrenci numarasına göre diğer alanların güncellenmesi işlemini gerçekleştirdik.
Button2‘de ise name özelliğini tbnoolarak değiştirdiğimiz textbox’ a girilen öğrenci numarasına ait kaydın silinmesi işlemini gerçekleştirdik.
Datagridview‘ de tıkladığımız satırdaki verilerin textboxlara gelmesi için Datagridview Cell_Enter olayına gerekli kodları yazdık.
Son olarak arama yapmak için textbox5’i kullandık. Buraya yazdığımız öğrenci adına göre veri tabanında filtreleme yapmış olduk.
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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.OleDb; // Access bağlantısı kurabilmek için. namespace veribaglanti1 { public partial class Form1 : Form { OleDbConnection con; OleDbDataAdapter da; OleDbCommand cmd; DataSet ds; public Form1() { InitializeComponent(); } void griddoldur() { con = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=okul.accdb"); da = new OleDbDataAdapter("SElect *from ogrenci", con); ds = new DataSet(); con.Open(); da.Fill(ds, "ogrenci"); dataGridView1.DataSource = ds.Tables["ogrenci"]; con.Close(); } private void Form1_Load(object sender, EventArgs e) { griddoldur(); } private void button1_Click(object sender, EventArgs e) // EKLE BUTONU { cmd = new OleDbCommand(); con.Open(); cmd.Connection = con; cmd.CommandText = "insert into ogrenci (ogr_no,ogr_ad,ogr_soyad,ogr_tel) values ('" + tbno.Text + "','" + tbad.Text + "','" + tbsoyad.Text + "','" + tbtel.Text + "')"; cmd.ExecuteNonQuery(); con.Close(); griddoldur(); } private void button3_Click(object sender, EventArgs e) //GÜNCELLE BUTONU { cmd = new OleDbCommand(); con.Open(); cmd.Connection = con; cmd.CommandText = "update ogrenci set ogr_ad='" + tbad.Text + "',ogr_soyad='" + tbsoyad.Text + "',ogr_tel='" + tbtel.Text + "' where ogr_no="+tbno.Text+""; cmd.ExecuteNonQuery(); con.Close(); griddoldur(); } private void button2_Click(object sender, EventArgs e) //SİLME BUTONU { cmd = new OleDbCommand(); con.Open(); cmd.Connection = con; cmd.CommandText = "delete from ogrenci where ogr_no="+tbno.Text+""; cmd.ExecuteNonQuery(); con.Close(); griddoldur(); } private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e) //DATAGRİDVİEW SATIRA TIKLANDIĞINDA TEXTBOXLARA AKTARMA { tbno.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString(); tbad.Text = dataGridView1.CurrentRow.Cells[1].Value.ToString(); tbsoyad.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString(); tbtel.Text = dataGridView1.CurrentRow.Cells[3].Value.ToString(); } private void textBox5_TextChanged(object sender, EventArgs e) // ARAMA YAPMA { con = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=okul.accdb"); da = new OleDbDataAdapter("SElect *from ogrenci where ogr_ad like '"+textBox5.Text+"%'", con); ds = new DataSet(); con.Open(); da.Fill(ds, "ogrenci"); dataGridView1.DataSource = ds.Tables["ogrenci"]; con.Close(); } } } |
Arama işleminin Dataview RowFilter kullanılarak nasıl yapılacağı ile ilgili örneğe buradan ulaşabilirsiniz.
Uygulamaya ait örneği buradan indirebilirsiniz.
===== www.yazilimkodlama.com =====
Örnek 2: Bu örneğimizde de yine C# Access Veritabanı bağlantısı oluşturacağız. Fakat bu örneğimizde yukarıdaki örnekten farklı olarak parametre kullanımını da göreceğiz. Örneğimize geçelim.
Form tasarımı:
Access Veritabanı dosyamız:
Bizim örneğimizde doyanın ismi dbSirket.accdb Tablo ismi ise Personel olarak belirlendi. Veri tabanımızı oluşturduktan sonra Projemizin ../bin/debug klasörü altına kopyalıyoruz.
Şimdi Formumuza dönebiliriz. Tasarım işini tamamen bitirmek için datagridview özelliklerinden SelectionMode özelliğini Tüm Satır seçili olacak şekilde ayarlayalım. (FullRowSelect)
Kodlarımız:
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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.OleDb; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace VeriBaglanti1403 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } OleDbConnection baglanti; OleDbCommand komut; OleDbDataAdapter da; // Kişileri listelemek için metot oluşturuyoruz. void KisiListele() { baglanti = new OleDbConnection("Provider=Microsoft.ACE.OleDb.12.0;Data Source=dbSirket.accdb"); baglanti.Open(); da = new OleDbDataAdapter("Select *From Personel", baglanti); DataTable tablo = new DataTable(); da.Fill(tablo); dataGridView1.DataSource = tablo; baglanti.Close(); } //For yüklendiğinde metodu çağırıyoruz. private void Form1_Load(object sender, EventArgs e) { KisiListele(); } //Ekleme işlemi private void button1_Click(object sender, EventArgs e) { string sorgu = "Insert into Personel (Numara,Ad,Soyad,Telefon) values (@no,@ad,@soyad,@tel)"; komut = new OleDbCommand(sorgu, baglanti); komut.Parameters.AddWithValue("@no", Convert.ToInt32(textBox1.Text)); komut.Parameters.AddWithValue("@ad", textBox2.Text); komut.Parameters.AddWithValue("@soyad", textBox3.Text); komut.Parameters.AddWithValue("@tel", textBox4.Text); baglanti.Open(); komut.ExecuteNonQuery(); baglanti.Close(); KisiListele(); } //Silme işlemi private void button2_Click(object sender, EventArgs e) { string sorgu = "Delete From Personel Where Numara=@no"; komut = new OleDbCommand(sorgu, baglanti); komut.Parameters.AddWithValue("@no",dataGridView1.CurrentRow.Cells[0].Value); baglanti.Open(); komut.ExecuteNonQuery(); baglanti.Close(); KisiListele(); } //Güncelleme işlemi private void button3_Click(object sender, EventArgs e) { string sorgu = "Update Personel Set Ad=@ad,Soyad=@soyad,Telefon=@tel Where Numara=@no"; komut = new OleDbCommand(sorgu, baglanti); komut.Parameters.AddWithValue("@ad", textBox2.Text); komut.Parameters.AddWithValue("@soyad", textBox3.Text); komut.Parameters.AddWithValue("@tel", textBox4.Text); komut.Parameters.AddWithValue("@no", Convert.ToInt32(textBox1.Text)); baglanti.Open(); komut.ExecuteNonQuery(); baglanti.Close(); KisiListele(); } //Datagrid' de tıklanan satıra ait değerlerin textBox' larda görüntülenmesini sağlıyoruz. private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e) { textBox1.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString(); textBox2.Text = dataGridView1.CurrentRow.Cells[1].Value.ToString(); textBox3.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString(); textBox4.Text = dataGridView1.CurrentRow.Cells[3].Value.ToString(); } } } |
Örneğe ait Video:
C# SQL SERVER BAĞLANTISI İÇİN TIKLAYIN.
C# dilinde yazılmış daha fazla örnek ve konular için C# Dersleri yazısını da incelemenizi tavsiye ederim. Ayrıca yazılmış diğer örnek ve uygulamalara sağ üstte bulunan site içinde ara ile göz atabilirisiniz.
Facebook Sayfamızı beğenerek daha fazla örneğe ulaşabilirsiniz.
public static List OgrenciListesi()
{
List degerler = new List();
SqlCommand komut2 = new SqlCommand(“Select *From TBLOGRENCI”, Baglanti.bgl);
if (komut2.Connection.State != ConnectionState.Open)
{
komut2.Connection.Open();
}
SqlDataReader dr = komut2.ExecuteReader();
while (dr.Read())
{
EntityOgrenci ent = new EntityOgrenci();
ent.Id = Convert.ToInt32(dr[“OGRID”].ToString());
ent.Ad = dr[“OGRAD”].ToString();
ent.Soyad = dr[“OGRSOYAD”].ToString();
ent.Numara = dr[“OGRNUMARA”].ToString();
ent.Fotograf = dr[“OGRFOTO”].ToString();
ent.Sifre = dr[“OGRSIFRE”].ToString();
ent.Bakiye = Convert.ToDouble(dr[“OGRBAKIYE”].ToString());
degerler.Add(ent);
}
dr.Close();
return degerler;
}
Bağlantı kapatılmadı. Bağlantının geçerli durumu: bağlanıyor. hatası veriyor yardım eder misiniz komut2 connection state open yazan yerde
İşlemler bitince SQL bağlantısını kapatın.komut2.connection.Close()
hocam merhaba
dataGridView1.DataSource = ds.Tables[“ogrenci”];
datagridview yerine listview kullanıyorum ve bu satırda datasource nin yerine ne yazmam lazım
hocam merhabalar anlatımınız çok güzel ama bana System.InvalidOperationException: ‘Veri değeri Decimal tüketicinin arabelleğinde Decimal değeri kısmı için belirtilen türe göre taştığından dönüştürme başarısız oldu.’ bu hatayı veriyor ne yapmam gerektiğini çözemedim.
Merhaba Hocam Ben Şimdi menustrip aracılıgıyla bilgi güncellemek istiyorum texbox’a yazı yazmadan 0 veya 1 olacak bunu nasıl yapabilirim yardımcı olur musunuz?
Update islemini menü ogesinde yapabilirsin
onu yaptım zaten texboxtan verileri cekip güncelliyorum ama ben bu işlemi sadece butona basınca gerçekleştirmek istiyorum sizden ricam kodu nasıl olur onun acaba
public partial class Form1 : Form
{
OleDbConnection bag = new OleDbConnection(“Provider=Microsoft.JET.OleDb.4.0;Data Source=” + Application.StartupPath + “\\sinav.mdb”);
OleDbCommand cmd;
int id;
public Form1()
{
InitializeComponent();
}
private void btnEkle_Click(object sender, EventArgs e)
{
string ad, soyad;
ad = txtAd.Text.Trim().ToLower();
soyad = txtSoyad.Text.Trim().ToLower();
bag.Open();
cmd = new OleDbCommand(“insert into ogrenci(ad,soyad) values(‘” + ad + “‘,'” + soyad + “‘)”, bag);
int i = cmd.ExecuteNonQuery();
if (i == 1) MessageBox.Show(“Kayıt işlemi Başarılıdır”);
else MessageBox.Show(“Kayır İşlemi Başarısız”);
bag.Close();
txtAd.Clear();
txtSoyad.Clear();
}
private void btnListele_Click(object sender, EventArgs e)
{
dataGridView1.Rows.Clear();
bag.Open();
cmd = new OleDbCommand(“select * from ogrenci”, bag);
OleDbDataReader dr = cmd.ExecuteReader();
string[] satir = new string[3];
while (dr.Read()) {
satir[0] = dr[0].ToString().ToUpper();
satir[1] = dr[1].ToString().ToUpper();
satir[2] = dr[2].ToString().ToUpper();
dataGridView1.Rows.Add(satir);
}
bag.Close();
}
private void btnSil_Click(object sender, EventArgs e)
{
bag.Open();
cmd = new OleDbCommand(“delete from ogrenci where ID=” + id, bag);
int i = cmd.ExecuteNonQuery();
if (i == 1) MessageBox.Show(“Silme işlemi Başarılıdır”);
else MessageBox.Show(“Silme İşlemi Başarısız”);
bag.Close();
btnListele_Click(sender, e);
}
private void Form1_Load(object sender, EventArgs e)
{
btnSil.Enabled = false;
btnGuncelle.Enabled = false;
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
id = Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value);
btnGuncelle.Enabled = true;
btnSil.Enabled = true;
txtAd.Text = dataGridView1.CurrentRow.Cells[1].Value.ToString();
txtSoyad.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString();
}
private void btnGuncelle_Click(object sender, EventArgs e)
{
string ad, soyad;
ad = txtAd.Text.Trim().ToLower();
soyad = txtSoyad.Text.Trim().ToLower();
bag.Open();
cmd = new OleDbCommand(“update ogrenci set ad='” + ad + “‘,soyad ='” + soyad + “‘ where ID=”+id, bag);
int i = cmd.ExecuteNonQuery();
if (i == 1) MessageBox.Show(“Güncelleme işlemi Başarılıdır”);
else MessageBox.Show(“Güncelleme İşlemi Başarısız”);
bag.Close();
txtAd.Clear();
txtSoyad.Clear();
btnListele_Click(sender, e);
}
}
Hocam sizi ilgi ile takip ediyorum. Verdiğiniz kıymetli bilgiler için sağolun. Veritabanıma aynı tc kimlik numarası ile giriş yapılmasını engellemek istiyorum. TC Kimlik Noyu Birincil anahtar yaptım ama programda hata vermesin bunun yerine “Aynı TC Kimlik Numaralı Kayıt Var!” diye bir uyarı yapmasını istiyorum.
string sorgu = “Insert into Personel (Numara,Ad,Soyad,Telefon) values (@no,@ad,@soyad,@tel)”;
komut = new OleDbCommand(sorgu, baglanti);
komut.Parameters.AddWithValue(“@no”, Convert.ToInt32(textBox1.Text));
komut.Parameters.AddWithValue(“@ad”, textBox2.Text);
komut.Parameters.AddWithValue(“@soyad”, textBox3.Text);
komut.Parameters.AddWithValue(“@tel”, textBox4.Text);
baglanti.Open();
komut.ExecuteNonQuery();
baglanti.Close();
KisiListele()
Bu kod özelinde bir örnekte gösterir misiniz? Aynı numaralı öğrenciyi ikinci kez kayıt etmesin etmek istediğimizde de uyarı versin. Saygılar.
Sorununuzla ilgili küçük bir örnek paylaştım. Kolay gelsin.
https://www.yazilimkodlama.com/c-2/c-veritabaninda-tekrar-kaydi-engelleme/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb; //Acces bağlantı dosyaları
namespace WindowsFormsApp4
{
public partial class Form1 : Form
{
//Veri Tabanı Değişkenlerini Tanımlama Bölümü
OleDbConnection baglanti = new OleDbConnection(“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=okul.accdb”);
OleDbCommand komut = new OleDbCommand();
OleDbDataAdapter adtr = new OleDbDataAdapter();
DataSet ds = new DataSet();
public Form1()
{
InitializeComponent();
}
//DataGridWiev de kayıtları listeleme bölümü
void listele()
{
baglanti.Open();
OleDbDataAdapter adtr = new OleDbDataAdapter(“Select * from ogrenci”, baglanti);
adtr.Fill(ds, “ogrenci”);
dataGridView1.DataSource = ds.Tables[“ogrenci”];
adtr.Dispose();
baglanti.Close();
}
private void button3_Click(object sender, EventArgs e)
{
if (textBox3.Text != “” && textBox4.Text != “” && textBox5.Text != “” && textBox6.Text != “”)
{
komut.Connection = baglanti;
komut.CommandText = “Insert Into ogrenci(ogr_no,ogr_ad,ogr_soyad,ogr_tel) Values (‘” + textBox3.Text + “‘,'” + textBox4.Text + “‘,'” + textBox5.Text + “‘,'” + textBox6.Text + “‘)”;
baglanti.Open();
komut.ExecuteNonQuery();
komut.Dispose();
baglanti.Close();
MessageBox.Show(“Kayıt Tamamlandı!”);
ds.Clear();
listele();
}
else
{
MessageBox.Show(“Boş alan geçmeyiniz!”);
}
}
private void Form1_Load(object sender, EventArgs e)
{
listele();
}
private void button1_Click(object sender, EventArgs e)
{
DialogResult c;
c = MessageBox.Show(“Silmek istediğinizden emin misiniz?”, “Uyarı!”, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (c == DialogResult.Yes)
{
baglanti.Open();
komut.Connection = baglanti;
komut.CommandText = “Delete from ogrenci where ogr_no=” + textBox1.Text + “”;
komut.ExecuteNonQuery();
komut.Dispose();
baglanti.Close();
ds.Clear();
listele();
}
}
private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
{
textBox3.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();
textBox4.Text = dataGridView1.CurrentRow.Cells[1].Value.ToString();
textBox5.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString();
textBox6.Text = dataGridView1.CurrentRow.Cells[3].Value.ToString();
}
private void button2_Click(object sender, EventArgs e)
{
baglanti = new OleDbConnection(“Provider=Microsoft.ACE.Oledb.12.0;Data Source=okul.accdb”);
adtr = new OleDbDataAdapter(“SElect *from ogrenci where ogr_no like ‘” + textBox2.Text + “%'”, baglanti);
ds = new DataSet();
baglanti.Open();
adtr.Fill(ds, “ogrenci”);
dataGridView1.DataSource = ds.Tables[“ogrenci”];
baglanti.Close();
}
private void button4_Click(object sender, EventArgs e)
{
komut = new OleDbCommand();
baglanti.Open();
komut.Connection = baglanti;
komut.CommandText = “update ogrenci set ogr_ad='” + textBox4.Text + “‘, ogr_soyad='” + textBox5.Text + “‘, ogr_tel='” + textBox6.Text + “‘ where ogr_no=” + textBox3.Text + “”;
komut.ExecuteNonQuery();
baglanti.Close();
ds.Clear();
listele();
}
private void button5_Click(object sender, EventArgs e)
{
dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
}
int seçilensatır;
private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
{
seçilensatır = Convert.ToInt16(ds.Tables[“ogrenci”].Rows[e.RowIndex][“Kimlik”]);
textBox3.Text = seçilensatır.ToString();
textBox4.Text = ds.Tables[“ogrenci”].Rows[e.RowIndex][“ogr_no”].ToString();
textBox5.Text = ds.Tables[“ogrenci”].Rows[e.RowIndex][“ogr_ad”].ToString();
textBox6.Text = ds.Tables[“ogrenci”].Rows[e.RowIndex][“ogr_soyad”].ToString();
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
private void dataGridView1_RowEnter_1(object sender, DataGridViewCellEventArgs e)
{
textBox3.Text = ds.Tables[“ogrenci”].Rows[e.RowIndex][“ogr_no”].ToString();
textBox4.Text = ds.Tables[“ogrenci”].Rows[e.RowIndex][“ogr_ad”].ToString();
textBox5.Text = ds.Tables[“ogrenci”].Rows[e.RowIndex][“ogr_soyad”].ToString();
textBox6.Text = ds.Tables[“ogrenci”].Rows[e.RowIndex][“ogr_tel”].ToString();
}
}
}
kaydı yaptıktan sonra kapatıp tekrar açınca kayıtlar kayboluyor sürekli kalmasını nasıl sağlayabilirim
?
solution explorerdan veritabanı simgesine tıkla alttaki properties kısmına gel “copy to output directory” karşılığını “do not copy” olarak değiştir düzelir
Kardeş dediğini yaptım ama şu hatayı aldım;
An unhandled exception of type ‘System.Data.OleDb.OleDbException’ occurred in System.Data.dll
Additional information: ‘C:\Users\——–
—–\Desktop\proje\projedent\bin\Debug\veritabani.accdb’ dosyası bulunamadı.
Veritabani dosyasinin belirtilen yolda ve isimde olmadığı hatasini veriyor. veritabani.accdb dosyanizi proje klasoru icinde bin/debug klasoru icine kopyalayin.
admin ExecuteNonQuery hatası var nedeni ne olabilir ?
Sql sorgunuzu kontrol edin
Hocam merhaba.c# dilinde access veritabanı kullanarak yaptığım bir proje var.Sorun şu ki ben bu veritabanının güvenliğini nasıl sağlayacağım? bildiğiniz gibi kullanıcı bu veritabanına uygulama klasöründen tıklayarak içeriğini görebilir ve verilerde değişiklikler yapabilir. Ben bu veritabanını nasıl koruyacağım?
Merhaba. Guvenlik çok önemliyse sql veritabani kullanabilirsiniz. Ama mutlaka access olması gerekiyorsa bazi klasor ve dosya sifreleme programları mevcut. Bu sekilde bir önlem alabilirsiniz.
Merhaba, biz visual studio da checkedlistboxtan seçilen satır indexiyle aynı indexe sahip listboxtaki verinin seçilerek datagridviewe aktarılmasını istiyoruz. Fakat yapamadık, yardımcı olur musunuz?
Teşekkürlerr, iyi çalışmalar.
Hocam Merhaba;
Acces veritabanı kullanıyorum hocam şuanlık projemde ve Access VeriTabanına Uzaktan Bağlanma yapmak istiyorum bu mümkünmüdür sabit bir ip üstünden server bilgisayarım var ve bu yazdığım programı başka bir bilgisayara yüklediğimde serverdaki veritabanıma kayıt yapmasını istiyorum teşekkür ederim. Kısacası Access VeriTabanına Uzaktan Bağlanma mümkünmüdür.
ConnectionStringini
Provider=MS Remote;Remote Provider=Microsoft.Jet.OLEDB.4.0;
Remote Server=server.adress.com;Data Source=d:\myPath\myDatabase.mdf;
yukarıdaki gibi oluşturup
server.adress.com kısmına kendi ip adresini girerek denermisin?
Ya da kendi makinana IIS yükleyip, bir web sunucuya dönüştürmen gerekiyor. Aşağıdaki yazılarıinceleyebilirsin.
https://www.yazilimbilisim.net/c-sharp/web-services/asp-net-ile-asmx-web-servisi-olusturmak/
https://www.yazilimbilisim.net/c-sharp/web-services/web-servis-nedir/
https://www.yazilimbilisim.net/c-sharp/web-services/web-servis-nedir/
Hocam bu kod ile programı farklı bir bilgisayardan açtığımda ip adresi farklı olan bir bilgisayardan bahsediyorum programda belirtmiş olduğum ip adresine erişip oraya kayıt yapar mı ?
Verdiğim kodda veritabaninin bulundugu ip adresini yazip deneyeceksiniz
Farklı bi ip den bağlanıp kayıt yapma ihtimali olabilir yani
Source=d\myPath\mydatabase.mdf yazan yere >mydatabase yazan yere veritabanının adını yazıyoruz data.accdb > d\myPath yazan yere ne yazmam gerekli hocam
Hocam bu kod ile Sunucuya bağlanılamıyor hatası veriyor yardımcı olabilirmisiniz.
Malesef deneme sansim yok. Diger göndermiş olduğum linklere baktınız mı?
Hocam bu kod ile Sunucuya bağlanılamıyor hatası veriyor yardımcı olabilirmisiniz.
Hocam Merhabalar ;
Access VeriTabanına Uzaktan Bağlanmak istiyorum sabit bir ip adresi verip başka bir bilgisayardan yazmış olduğum programı yüklediğimde serverdaki acces veritabanına ordan kayıt girmesini istiyorum bu mümkünmüdür. Access VeriTabanına Uzaktan Bağlanma’ kısacası bu mümkünmüdür böyle bir örneğiniz varmıdır acaba çok teşekkür ediyorum.
İyi Günler Ben Size Nasıl Anlatsam bilemedim benim sorunum kullanıcı adı ve şifrem var bunu veri tabanında kullanmak istemiyorum ama arada kullanıcı adı ve şifre değiştirmem gerekiyor bunun için ne yapabiliriz
Merhaba projem içim bir kütüphane otomasyonu yapıyorum eklersen sorun olmuyor tarihler ama güncellemeye çalışırken sürekli hata alıyorum
“”””””
An unhandled exception of type ‘System.Data.OleDb.OleDbException’ occurred in System.Data.dll
Additional information: Data type mismatch in criteria expression.
“””””””
Sorun için yardımcı olur musunuz?
SQL Server’da tabloda kayıt edilen tarih formatı ay/gun/yıl şeklindedir. Seninde bu formatta veriyi kaydetmen gerekir.
Merhaba
Öncelikle elinize emeğinize sağlık. Çok faydalı bir site olmuş. Benim şöyle bir sorunum var. Access veritabanımda tahsilat diye bir tablo oluşturdum ve kayıt giriyorum. Yeni kayıt oluşturmada sorun yok ama düzeltme yada silme işlemi yapmayı denediğimde işlem tamamlandı mesajı alıyorum, herhangi bir hata vermiyor ama silme yada güncelleme işleminide yapmıyor. Kodlarım aşağıda.
Projemde kayıt yapılan 3 form daha var onlarda bir sorun yaşamadım. son oluşturduğum formda bu sorunu yaşıyorum.
private void button3_Click(object sender, EventArgs e)//SİLME ONAY BUTONU
{
{
try
{
DialogResult cevap;
cevap = MessageBox.Show(“Kayıt silinecek!!! Onaylayın”, “Uyarı”, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (cevap == DialogResult.Yes)
{
cmd5 = new OleDbCommand();
con.Open();
cmd5.Connection = con;
cmd5.CommandText = “delete from tahsilat where no=” + dataGridView1.CurrentRow.Cells[0].Value.ToString() + “”;
cmd5.ExecuteNonQuery();
cmd5.Dispose();
con.Close();
griddoldur5();
textBox2.Clear();
textBox3.Clear();
MessageBox.Show(” KAYIT SİLİNDİ!!!”);
}
}
catch (Exception hata)
{
MessageBox.Show(hata.Message);
}
}
}
iyi calismlar dilerim.
paylasimini cok guzel
peki tablonun icini bosaltmak istesek nasil olur?
tablonun içini boşaltmaktan kastınız veritabanındaki tabloyu silmekse Delete *From tabloadi şeklinde SQL sorgusu çalıştırmalısınız. Fakat tüm kayıtlar silincektir.
Çok Teşekkürler.
hocam dgrid nesnesine kayıt girmek istediğimde yeni satır numarası -1 olarak görünüyor. sebebi ne olabilir? Bi de dgid nesnesine elle giriş yaptığımızda girilen bilgileri veri tabanına kaydetmiyor. c++ builder kullanımı gerçekten çok daha rahattı. orada bu tarz problemler yok denecek kadar az çıkıyoru karşıma.
Merhaba bi sorum var bakabilirmisinzi
peki ben acces sorgusunu c# a nasıl bağlarım ?
hocam 1 orenegın aynısını yaptım eklıyorum ama hata verıyo sarı ısaret gelıyo
Hata mesaji olarak ne verdigini soylerseniz yardimci olunabilir. Ornege ait indirme linki bulunmakta. İndirip tekrar deneyebilirsiniz.
Merhaba ben bir öğrenci takip programı yapmaktayım ödev için, sınıflardaki kayıtlı öğrencilerin çıktısını alıcam okul bilgilerini seçicem fakülte adı,program, sınıf, öğrenim türü seçtikten sonra bana o seçilen değerlerdeki öğrenciler gelicek acaba nasıl yapabilirim bana yardımcı olurmusun. Şimdiden teşekkürler kolay gelsin.
Merhaba, çok güzel oldu sayenizde bir rehber yazılımı geliştirdim ancak arama özelliği olmaması kötü oldu. Arama özelliği ekleyebilir miyim? nasıl eklerim? Mesela 1000 tane girdi var ben x adlı kişiyi aratıyorum x adlı kişinin 88. sırada (mesela) yer alıyor , adı soyadı, telefon bilgilerini bana göstersin istiyorum. Mümkünse bilgilendirirseniz sevinirim.
EDIT: Sayfayı tekrar inceleyince şimdi fark ettim. Arama nasıl yapılacağı hakkında link verilmiş fakat gözümden kaçmış. Teşekkürler
hocam komutu kendi projeme uyarladıgımda sadece kayıt formu yaptım.çalıstırdıgımda kayıtekleme formunu acmayıp kod satırında con u secili hale getirmektedir ama errror mesajı yoktur yardımcı olurmusunuz?
Görmeden bir şey söylemek zor. Örneği indirip inceleyebilirsiniz.
https://yadi.sk/d/gf5VVy4yg5oTz
https://drive.google.com/drive/folders/0B4YqhPG9NfDGOHFwZng1SUZlU3M?usp=sharing
kullanıcı adı=admin
şifre=123456
kayıt ekleme sayfasına giderken hatayı incelrseniz sevnirim ahmet cansever
İlgilenmeye çalışacağım acil değilse.
Tabiki sizden gelicek cvabı bekliyor olacagım.
Kullandığınız Mail adresi yorum yaparken belirttiğiniz adres mi?
evt belirrttiğim adres mail adresimdir.
merhaba hocam, benim bir sorum olacaktı. müsteri numarasını ikincil anahtar olarak başka bir tabloya eklemek istiyorum ama kullanıcının musteri numarası yerine müsteri adını görmesini istiyorum. bunun için ne yapmalıyım?
Öncelikle herkese Merhaba,Hocam ben sizin bahsettiğiniz gibi yaptım her şeyi ancak ek olarak bir şey daha yapmam lazım öncelikle..Benim projem güneş paneline düşen akımı arduıno ile ölçüp c# yapılan bir otomasyonla okuyucuya sunup bu verileri kaydetmek ben bunu yapamıyorum verileri saklamak istiyorum her 3 dakika da bir çekip kaydetmek istiyorum. ve bunu accesse veya excele aktarmak istiyorum bunu nasıl yaparım ?
Diğer kısımları tamamsa projenize Timer kontrolü ekleyerek kaydetme işlemini Timer kullanarak yapabilirsiniz.
Biliyorum da bende onu yapamıyorum işte 1-2 günüm kaldı bitirme projem bu benim vizeler geldi lütfen yardımcı olurmusunuz.
Yorum yaparken belirttiğiniz mail adresinizi mi kullanıyorsunuz? Yarın Timer kullanarak kayıt eklemeyle ilgili küçük bir örnek hazırlayıp göndermeye çalışacağım.
Evet o adresi kullanıyorum Allah sizden razı olsun çok minnettarım teşekkür ederim gerçekten.
Projeyi buradan indirebilirsiniz. Text kutusuna bir şeyler yazıp butona bastığınızda Timer çalışmaya başlayacak. Beklerseniz 5 sn de bir kayıt eklendiğini göreceksiniz.
Hocam ayrıca bu verileri ben okurken textboxda okuyorum haberiniz olsun
Yukarıdaki yorumda link verdim.
Hocam Ellerinize sağlık ben şimdi kodu düzenliyeceğim de size atma şansım var mı bir baksanız doğru mu diye yarın sabahta kampüse gidip bağlantıyı kuracağım..
ahmet.cansever@yandex.com.tr mail adresine gonderebilirsiniz fakat bugun icin ilgilenememe durumumda olabilir malesef.
hiç önemli değil emeğinize karşılık sabaha kadar beklerim
https://drive.google.com/open?id=0BxMd4wuRjg5dVC1Bb2ctZTBxRGc buyrun hocam ancak dataSource hata veriyor…
programın ana girdi noktasında şu kısımda “Application.Run(new Form1());” hata veriyor
( Hata CS0246 ‘Form1’ türü veya ad alanı adı bulunamadı (bir using yönergeniz veya derleme başvurunuz mu eksik?) ) çözümü nedir
Aynı örneği gerçekleştiriken mi oldu yoksa farklı bir projedemisiniz.
Hata Form1 namespace yani referansını eklemekle ilgili.
aynı örneği oluştururken oldu
Örneği aşağıdaki linkten indirip inceleyebilirsiniz.
https://yadi.sk/d/gf5VVy4yg5oTz
saolun hocam
Teşekkürler. Çok yardımcı oldu konuyu anlamamda.
Merhaba, benim C# ta uğraştığım bir projem var veritabanı bağlantımı access le yaptım birçok tablom var.
Tablomdaki isimleri bu kodla comboBox a aşağıdaki kodla yazdırdım.
OleDbConnection baglanti = new OleDbConnection(@”Provider = Microsoft.Jet.OLEDB.4.0; Data Source =| DataDirectory |\bin\Debug\muhasebe_veritabanı.mdbProvider = Microsoft.Jet.OLEDB.4.0; Data Source = muhasebe_veritabanı.mdb”);
baglanti.Open();
DataTable dt = baglanti.GetSchema(“Tables”);
//dataGrid1.DataSource = dt;
for (int i = 0; i 799)
MessageBox.Show(“Klasör Doldu Lütfen yeni Klasör Açın!”, “Bilgilendirme Penceresi”);
da = new OleDbDataAdapter(sorgu, baglanti);
ds = new DataSet();
da.Fill(ds, tablo);
dataGrid1.DataSource = ds.Tables[tablo];
baglanti.Close();
————————————————————————————————————————
Buna benzer bir kod ile comboBox tan seçip açılan tabloya ekleme işlemi nasıl yaptırabilirim.
Merhaba. Aşağıda linkini verdiğim konuyu inceleyebilirsiniz.
http://www.yazilimkodlama.com/programlama/c-access-veritabanindan-tablo-isimlerini-cekme/
Merhabalar, Yaklaşık 2 aydır C# öğrenmeye çalışıyorum.Ve sıfırdan başladım fakat C# oldukça ilgimi çekti.Bugün ise işyerimde kullanabileceğim bir program yaptım.Veri tabanı olarak Access kullandım.Program klasörünü ortak paylaşıma açık ortak klasöre yükledim ve program çalıyor fakat farklı bir pc den aynı anda giriş yapılmak istendiğinde hata veriyor hali hazırda kullanıldığı hatası veriyor.Belirttiğim gibi ,IP’leri farklı olan ve aynı ortak klasörümüzü gören PC’ler için Accesss tabanlı C# programımı nasıl kullanabilir.Program klasörümü ,tüm Pc’lerin ulaşabildiği Ortak Klasöre aldım ve 10 PC’nin hepsi de program klasörünü görüyor.Fakat Aynı anda programı birden fazla PC kullanamıyor ve zaten kullanımda hatası veriyor.Bu durumda programı tüm PC’lere ayrı kurmam mı gerekiyor ?Tüm PC’lere kurunca da veri tabanlarını da ayrı olarak kullanacak.Oledb bağlantısı için de ortak klasördeki yolu yazarsam bu sefer de kullanacağı veritabanı kendi Debug dosyasının içinde olmadığı için hata verir mi ?Yardimlarınız rica.
Merhaba. Access coklu erisim ile ilgili bi yazi ekleyecegim en kisa zamanda.
hem update hem insert komutlarında sözdizimi hatası veriyor
yazdığınız satırlarda bir hata var. Sorgu cümlenizi kontrol edin.
baktım ama sorun yok gibi gözüküyor kesin virgüllerde hata var ama bilmiyorum
Projeyi sıkıştırıp yollarsanız ilgilenebilirim.
Mail: ahmet.cansever@yandex.com.tr
ahmet bey merhaba,güncelleme işlemi ogr_no ya göre yapılıyor peki ama ogr_no güncellenmiyor onu nasıl güncelleyebiliriz?
ogr_no alanı burada birincil anahtar olarak ayarlı. Siz veritabanını oluştururken birincil anahtar olarak id isminde bir alan tanımlayıp otomatik sayı olarak ayarlayabilirsiniz. Güncelleme işlemini de bu alana gore yaparak ogrno yu da güncelleyebilirsiniz.
System.Data.OleDb.OleDbException hatası alıyorum güncelle ve sil butonları kullanılmıyor neden olabilir yardımcı olabilir yardımcı olabilirseniz sevinirim.
Merhaba. Sadece Güncelle ve Sil Buttonlarında mı hata alıyorsunuz?Verileri normal bir şekilde çekebiliyor musunuz? Project menüsünde en altta projeismi_properties e tıklayıp burada Build sekmesinde Platform Target bölümünden x86 seçerek dener misiniz?
Birde örnek bağlantıyı aşağıdaki linkten de indirebilirsiniz.
https://yadi.sk/d/gf5VVy4yg5oTz
Merhaba. Dediğiniz olayı yaptım yine olmadı sizin attığınız linkdeki dosyayı indirdim problem çıkmadı.Ama size ekte bi resim atıcam o yuzden oldugunu düşünüyorum bi de neden olur onu öğrenmek istiyorum ilginiz için teşekkür ederim.
http://www.hizliresimyukle.com/image/MaDa
Projeyi görmem lazım. Farklı bir hatada olabilir. Projeyi sıkıştırıp yollayabilirseniz müsait olunca ilgilenebilirim. Facebook sayfamızdan mesaj olarakta atabilirsiniz.
Tabi ki gönderirim.Bide son olarak şunu söliyim bu kodda hata veriyor cmd.ExecuteNonQuery(); tekrardan teşekkürler haber bekliyorum sizden.
http://s5.dosya.tc/server3/0m1bm3/WindowsFormsApplication4.rar.html
Merhaba. Yolladığınız projeyi inceledim. Bir kaç hatanız var. Ama en önemlisi veritabanı tasarımınızla ilgili. Birincil anahtar olacak benzersiz bir alanınız yok. Sil butonunu Ad alanına göre yapıyorsunuz. Böyle bir durumda atıyorum Mehmet olarak giriş yaptığınızda tablonuzda bulunan adı Mehmet olan tüm kayıtlar silinecektir. Bu büyük bir yanlış. Yazımla ilgili hatalarınıza gelecek olursak ;
Güncelle butonu için:
cmd.CommandText = “update Tablo1 set Ad='” + tbad.Text + “‘,Soyad='” + tbsoyad.Text + “‘,Telefon='” + tbtel.Text + “‘ where Kimlik_No='” + tbkimlik.Text + “‘”; ,
şeklinde düzeltin. Benim yaptığım örnekte where kısmından sonraki alan sayısal bir değer olduğu için ‘(tek tırnak) koymamıştım. ama sizde bu alan metin alanı. O yüzden tek tırnak koymalısınız. Söylediklerim Sil butonu içinde geçerli.
cmd.CommandText = “delete from Tablo1 where Ad='” + tbad.Text + “‘”;
Bunlar ahricinde datagrid ile ilgili üstüne tıklandığında tüm satırın seçili olması gibi özellikleri yazıdada belirttiğim videodan izleyerek ayarlayabilirsiniz.
Ama yol yakınken veritabanınızın tasarımını değiştirin.Çünkü en büyük sorun bu. Bir alan ekleyip otomatik sayı olarak ayarlayabilirsiniz mesela. Kolay gelsin.
merhaba linkteki hatayı alıyorum
http://hizliresim.com/883vDV
ve ben bu provider kısmını anlamadım neye göre onları yazıyoruz bende excel 2003 versiyonu var başka bir provider mı yazmalıyım
Excel bağlantısı oluşturuyorsunuz. Yorumunuz yanlış yerde sanırım. Excel bağlantısı ile ilgili yapmış olduğum örnek için;
http://www.yazilimkodlama.com/programlama/c-ile-excel-dosyasina-baglanma/
Merhaba Ahmet bey benim bir programda yardımınıza ihtiyacım var. Hoca bir proje verdi fakat ben bir türlü anlayıp da yapamadım. Projem şu şekilde: c# da yazılı sorusu hazırlama programı. Butona basıldığında veri tabanından (access) rastgele 10 tane soruyu tabloya çağıracak. Veri tabanında 100 tane soru olacak. Şekilde bir proje. İlginize şimdiden teşekkürler.
Merhaba. Select sorgusunu aşağıdaki gibi oluşturursanız radsgele 10 kaydı getirecektir. Tablo isminin sorular ve Birincil anahtarın ID olduğunu varsayıyorum.
select top 10 * from sorular order by Rnd(-(100000*ID)*Time())
iyi günler. tapu otomasyonu hakkında yardımcı olabilir misiniz acaba?
Yardim istediginiz konuda biraz daha detay verebilirmisiniz.
Ahmet bey gerçekten sizi tebrik ediyorum , gerçekten sade anlaşılır ve çözüme çabuk giden bir proje çıkartmışssınız , bundan aylar önce ilk veri tabanı bağlantım sizin sayenizde oldu teşekkür ediyorum
Yorumunuz icin tesekkur ederim.
Günlerdir yapmaya çalıştığım program var proje için ama bir türlü bitiremedim Lütfen yardımcı olur musunuz ?
Hafta sonu vakit bulamayacagim. Sorun yaşadığınız kısımla ilgili bilgi verirseniz yardımcı olmaya calisirim.
Merhaba Ahmet Bey;
Uğraştıkça yeni şeyler çıkıyor 🙂 , iş yerinde ağ bağlantılarında bu aralar sıkça sorun oluyor ve diğer bilgisayar oluşturduğum forma bağlanmak istediklerinde Microsoft.Net Framework başlığı ile uzun bir hata mesajı ile karşılaşıyorlar.
Yapmak istediğim form açılırken, veri tabanına bağlantı sağlanmadığında mesaj kutusu ile uyarı vermesini ve açılış işleminin iptal edilmesi. Uğraştım ama yapamadım. Bu konuda da yardımcı olabilir misiniz?
Try catch bloğuna alabilrsiniz.
Teşekkürler 🙂 buda oldu.
🙂 Kolay gelsin.
Teşekkür ederim 🙂 sizede kolay gelsin.
visual studio da uygulama yapıyorum. izlediğim videoda verileri accsess 2007 den çekmişler ama ben 2010 kullanıyorum.programımda çalışmıyor acaba o yüzden olabilir mi ? videoda kullanılan kod şu şekilde ” Provider=Microsoft.ACE.OLEDB.12.0;Data Source ” bi yardımcı olur musunuz 🙁
Buradan sorunun çözümüne ulaşabilirsiniz
version 4.0 hatası veriyor. bu sorunu nasıl çözebilirim? ACİL YARDIM 🙁
Hata mesajında ne yazıyor?
‘System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ dosyasını veya derlemesini ya da bağımlılıklarından birini yükleyemedi. Sistem belirtilen dosyayı bulamıyor.
şeklinde yazıyor
Merhaba sorununuz bağlantıyla ilgili görünmüyor. Form1.resx dosyasından kaynaklı görünüyor. Linkteki çözümü deneyebilirsiniz. Ya da projeyi sıkıştırıp yollayabilirsiniz.
linkte yazanlardan pek bişey anlamadım açıklayabilir misiniz
Merhaba Ahmet Bey;
Proje veri tabanı Access 2010, ama iş yerinde her bilgisayarda Office 2010 kurulu değil.
Bazı bilgisayarlarda 2007, bazılarında 2013 var ve bu bilgisayarlar veri tabanı bağlantısı sırasında hata veriyor. Office versiyonunu değiştirmeden, c# da kod ile çözülebilir mi?
Saygılarımla, iyi çalışmalar.
En dusuk versiyona göre ayarlayabilirsiniz kodlarinizi. .accdb yerine .mdb uzantılı access dosyasina çevirin veritabaninizi. Provider kismini da degistirirseniz sorun kalmaz.
Teşekkürler, dediğiniz gibi .mdb ile değiştirince çalışmayan bilgisayarlarda çalıştı. Şimdiki sorun ise çözünürlük ayarı 🙂
Formların Ekran çözünürlüğüne göre ayarlanması için araştırma yaparken
this.Location = new Point(0, 0);
this.Size = Screen.PrimaryScreen.WorkingArea.Size;
bu kodlara ulaştım ve tek sıkıntı 1024×768 çözünürlüğünde formun sağ tarafını göstermiyor. Sizin tavsiye edeceğiniz bir kod var mı her çözünürlüğe göre formu ekrana ayarlaması için.
Form genişliğiniz 1024 değerini aşmış olmalı. O değere göre formu tasarlamanız gerektiğini düşünüyorum.
İnce detayları bilmeyince sonuç böyle oluyor 🙂 formu dağıttım ama sonuçta oldu teşekkürler.
Sorun değil.Böyle durumlarda her zaman kötüye göre ayarlamak gerekiyor.
Kolay gelsin.
Eğer Microsoft.Ace.OleDb.12.0′ sağlayıcısı yerel makine kayıtlı değil. şeklinde bir hata alıyorsanız; Çalışmayan bilgisayarlara alttaki linkten dosyayı indirip kurmayı da deneyebilirsiniz.
https://www.microsoft.com/en-us/download/confirmation.aspx?displayLang=en&id=23734
Teşekkürler 🙂 buda bir kenarda bulunsun.
bende bu sorunla karşı karşıyaydım teşekkürler!
hocam ogrnoyu girdiğimizde aynı ogrnolu öğrenci olursa hata vermesi istiyoruz bunu nasıl yapabiliriz
Veritabaninda tabloda ogrno alanini birincil anahtar yapin.
denedim ama accesde birincil anahtar yapınca hata veriyor
bende ki proje imei nosu var ve bu imei nosuna ait telefon bilgileri var. bir imei nolu telefon kaydettiğim zman aynı imei nolu kaydetmesin mesaj versin
İmei numarasi birincil anahtar mı? Birincil anahtarsa try catc bloguyla halledebilirsiniz. Birincil anahtar degilse veritabaninda olup olmadigini kontrol edip if bloğu ile hata mesaji ya da kayit ederek gerçekleştirebilirsiniz.
Nasıl bir hata veriyor. Tekrarlayan kayıt olabilir mi? Yani aynı numaraya ait öğrenci kaydı olabilir mi?
projemde 3 adet form var ve bu 3 formda ilkinde kayıt sorgulama var diğerlerinde kayıt ekleme silme değiştirme vb bulunuyor. if bloğunu nerede ve nasıl kullanacagım teşekkürler.(imei nolu proje bir imei girildiğnde aynı imeiden varsa uyarı versin istiyorum accesde )
İsteğinizle ilgili küçük bir örnek hazırladım. fakat 3-4 dakikalık bir sürede hazırlandığı için biraz düzensiz gelebilir. Ama incelerseniz fikir sahibi olabilirsiniz. Daha düzenli ve detaylı bir anlatımı vakit bulunca hazırlayıp buraya eklerim.
Buradan indirebilirsiniz.
Merhaba Ahmet Bey;
Arama yaparken, kelimeleri baştan değilde, kelimelerin içeriğinde olanları aratmak istersek yazmış olduğunuz bu satırda nasıl bir değişiklik yapmamız gerekmektedir?
da = new OleDbDataAdapter(“SElect *from ogrenci where ogr_ad like ‘”+textBox5.Text+”%'”, con);
Merhaba.
da = new OleDbDataAdapter(“SElect *from ogrenci where ogr_ad like ‘%”+textBox5.Text+”%’”, con);
şeklinde kullanabilirsiniz.
Merhaba,
Dediğiniz yöntemi denemiştim ama yine aynı şekilde arama yapıyor,
like ‘%” +textBox5.Text+ “%'”
like ‘%” +textBox5.Text+ “‘%”
like ‘%” +textBox5.Text+ “‘”
bunları denedim. Başka nasıl yapabilirim 🙂
da = new OleDbDataAdapter(“SElect *from ogrenci where ogr_ad like ‘%”+textBox5.Text+”%'”, con);
yukarıdaki örnek için şu anda deneyip çalıştığını görmüş olduğum kod parçası. Tekrar kontrol edermisiniz. Belki tek tırnak ve çift tırnaklar karışmış olabilir.
Evet kod, deneme için yaptığım projede çalışıyor ama asıl projede çalışmıyor. Sadece ilk harften aramaya devam ediyor.
Sitede dataview rowfilter konusuna da bi göz atabilirsiniz.
Teşekkürler 🙂 böyle böyle öğreniyorum sizide uğraştırıyorum kusura bakmayın.
Rica ederim. İstediginiz zaman sorabilirsiniz. Elimden geldiği kadar yardımcı olmaya calisirim.
Iyi gunler acil yardim istyorum visual studio 2015 programinda visual basic olarak program tasarimimi yaptim suan access 2007dede veritabani tablolarimi olusturdum bunlari birbirine nasil bagliyacagimi bilmiyorum bi kac birsey denedim olmadi final sinavim bu program okulu btrmem buna bagli yardim edin nolur otopark takip sistemi ypiyorum ama veri baglanti kismina gelince tikandim bnim hic bir formumda using system liolan komut satrlari yok ne ypmam lazim ufak kizim var bde o uyudukca yapmaya calusiyorum bya zordayim
Merhabalar;
Microsoft’un sitesinde çalışmanıza yönelik bir anlatım var;
https://support.microsoft.com/tr-tr/kb/821765 ilgili bağlantıdan makaleye ulaşabilirsiniz 🙂
Umarım işinize yarar. Saygılarımla.
Merhabalar, anlatımınız için teşekkür ederim. Anlatımınızdan faydalanarak küçük bir çalışma hazırladım ve sorunsuz çalışıyor. Sadece veri tabanını ağda erişime açmak kaldı…
Benim sorum; Access Veri tabanını ağ üzerinde erişime açmak.
Bu nedenle;
“Provider=Microsoft.ACE.OleDb.12.0;Data Source=deneme.accdb”
(\\192.168.1.16\Debug\deneme.accdb) böyle yazınca hata veriyor.
bu satırı nasıl düzenlemeliyim ya da ağda kullanabilmek için ek kodlara mı ihtiyaç var?
Saygılarımla kolay gelsin.
Merhaba. Öncelikle herhangi bir klasörü paylaşıma açtığınızı varsayarak yazıyorum. Bu paylaşılan klasörün içine tüm proje yerine sadece veritabanı dosyasını atabilirsiniz. Benim örneğini vereceğim Connection String cümlesini kısaca açıklayayım. Masaüstü Bilgisayarda(DESKTOPAC) Paylasim isimli klasör oluşturarak paylaşıma açtım ve içine okul.accdb dosyasını attım. Daha sonra dizüstü bilgisayarımda projeyi açarak Bağlantı cümlesini şu şekilde değiştirdim.
con = new OleDbConnection(“Provider=Microsoft.ACE.Oledb.12.0;Data Source=\\\\DESKTOPAC\\Paylasim\\okul.accdb”);
Sizde bu şekilde değiştirdiğinizde çalışacaktır.
Merhaba Ahmet Bey,
Dediğiniz gibi paylaşımdaki klasöre sadece veritabanını attım ve klasöre Okuma/Yazma yetkisi vererek ;
Hem ip ile (\\\\192.168.1.16\\Paylasim\\deneme.accdb)
hem de bilgisayar ismi (\\\\bilgisayaradi\\Paylasim\\deneme.accdb) ile ayrı ayrı dediğiniz şekilde kodlara ekleyerek projeyi ağdaki başka bir bilgisayarda çalıştırarak denedim ancak şu şekilde hata veriyor;
“Microsoft Access veritabanı alt yapsı \\bilgisayaradi\Paylasim\deneme.accdb dosyasını açamadı veya bu dosyaya yazamadı. Dosya bir başka kullanıcı tarafından özel kullanımda açılmış ya da verilerini görüntüleme veya yazma izniniz yok.”
Access ayarlarında, varsayılan açma yöntemi de Paylaşılan seçili ama deneme yanılma yöntemleri sonuçsuz kaldı 🙂 bu sorunu nasıl çözebilirim.
Saygılarımla kolay gelsin.
Bağlantı cümlesi mesajda olduğu gibi olacak. Bizzat denedim bu şekilde ulaşılıp kullanılabiliyor. Siz normalde windows üzerinden erişebiliyormusunuz peki? Bir de dosyayı açıp değişiklik yapabiliyormu sunuz?(Windows üzerinden)
Kusura bakmayın, Ağ Bağlantı Ayarlarından Parola Korumalı Paylaşımı kapatınca oldu; ama paylaşımda olan diğer dosyalara erişilmemesi içi bilgisayar adı ve şifresini kod içine nasıl yazabilirim.
Bu bağlantı işlemlerini SQL Server üzerinden yapsaydınız bu tarz işlemler daha rahat olurdu. Şu anki sorununuz için aklıma gelen en kolay yöntem bu dosyayı erişilmesini istemediğiniz dosyalarla aynı klasöre koymayıp farklı bir klasöre koyarak paylaşım izinlerini ayarlamak. Ana makinede Paylaştığınız klasörde sağ tıklayarak Özellikler – Güvenlik sekmesinde kullanıcılara özel Tam Denetim, Değiştirme, Okuma, Yazma ..ayarlarını İzin Ver/İzin Verme olarak ayarlayabilirsiniz.
Merhabalar Ahmet Bey;
İnşallah sizin bu anlatımlarınız sayesinde SQL Server ile de çalışmalar yaparım 🙂
Ağdaki klasöreler için de paylaşım klasörünün ismini $ işareti ile ağda gizleyerek şimdilik çözüm getirdim 🙂
Paylaşımlarınız için tekrar teşekkürler,
Saygılarımla iyi çalışmalar.
Rica ederim. Size de iyi çalışmalar.
Hocam bakarmısınız ekle butonu cıkıyor güncelle sil butonu cıkmıyor hatalı yaptığım yerde göremiyorum.http://i.hizliresim.com/bD1noG.png
hocam ben sorunu hallettim ekle butonuna bastığımda sorunsuz ekleniyor fakar güncelle ve sil butonu çalışmıyor sizce nedir sorun ?
Hata veriyor mu?
hocam yine olmadı
http://i.hizliresim.com/pzanZL.png
Tek tırnakları unutmuşsun. ‘”+comboBox1.Text+”‘seklinde olacak.
Hocam silmek için combobox kullanmıştım
Combobox içinde hangi veriyi tutuyorsunuz. ID numara şeklinde mi? Sorgunuzu yollarsaniz kontrol edebilirim.
Ben veritabanının içine işletme kaydediyorum comboboxta da işletme adları var eğer işletmeyi silceksem comboboxtan seçip silmek istiyorum
Sql sorgunuzu yollarmisiniz.
Delete from …. Where ??
private void button2_Click(object sender, EventArgs e)
{
baglanti.Open();
komut = new OleDbCommand();
komut.Connection = baglanti;
komut.CommandText = “delete from Ist where istad=” + comboBox1.Items + “”;
komut.ExecuteNonQuery();
baglanti.Close();
goster();
}
Combobox1.Text denermisin
Hocam ben textbox yerine combobox kullandım ExecuteNonQuery kısmında hata veriyor ne yapıcam.
Combobox kullanma amacınız verileri combobox içerisine doldurmaksa bu sekilde olmaz. Aşağıdaki örneği inceleyebilirsiniz. Listbox yerine combobox kullanabilirsiniz.
http://www.yazilimkodlama.com/programlama/c-net-oledbdatareader-nedir/
Merhaba. Veritabanindan gelen veriyi değişkene nasil atabilirim. Yani herhangi bir alanda bulunan veriyi datagride değil de değişkene almam gerekiyor.
http://www.yazilimkodlama.com/programlama/c-veritabani-musteri-bakiye-ve-tahsilat-islemleri/ bu linkteki örnekte sorununuzla ilgili bilgiyi bulabilirsiniz.
Access 2016 nın Provider i nedir ?
Örnekteki gibi.
http://www.yazilimkodlama.com/c-2/microsoft-ace-oledb-12-0%E2%80%B2-saglayicisi-yerel-makine-kayitli-degil-hatasi-cozumu/
Hata aliyorsaniz linkte anlatilanlari uygulayabilirsiniz.
Merhaba. Öncelikle teşekkür ederim. Ekleme silme işlemlerini parametre kullanarak nasil yapabiliriz. Bununla ilgili yardimci olursanız sevinirim.
Merhaba bununla ilgili Ekle Butonu için aşağıda yazdığım kodları inceleyebilirsiniz. Parametre kullanarak Ekleme işlemini bu şekilde yapabilirsiniz. Aynı şekilde Güncelleme ve Silme işlemi için kodları uyarlayabilirsiniz.
İsterseniz buradan sorunuzla ilgili örneğe ulaşabilirsiniz.
string sorgu = “Insert into Personel (ogr_no,ogr_ad,ogr_soyad,ogr_tel) values (@no,@ad,@soyad,@tel)”;
cmd = new OleDbCommand(sorgu, con);
cmd .Parameters.AddWithValue(“@no”, Convert.ToInt32(tbno.Text));
cmd .Parameters.AddWithValue(“@ad”, tbad.Text);
cmd .Parameters.AddWithValue(“@soyad”, tbsoyad.Text);
cmd .Parameters.AddWithValue(“@tel”, tbtel.Text);
baglanti.Open();
cmd .ExecuteNonQuery();
con.Close();
griddoldur();
Tesekkürler.
size katılıyorum küçük cen bey güzel ve kullanışlı bir progam 🙂
süperrr
Teşekkür ederim bu güzel ve sade paylaşım için
HOCAM BU UYGULAMAYI İNDİRME ŞANSIMIZ YOKMU?VARSA BİR LİNKİNİ KOYARMISIN?
Yazının altına link eklendi.
Datagridview’de başlıkları nasıl kalın yapıyorduk bi’ türlü beceremedim.
Datagrid tıkladıktan sonra Properties Penceresinde Appearance altında ColumnHeadersDefaultCellStyle bölümünde “…” butonu tıklanır.Gelen pencerede Font altında Bold özelliği true yapılır.
merhaba dediğiniz gibi yanlış kısımları düzelttim fakat bu sefer kayıt butonuna basınca aynı hatayı alıyorum ama sadece ikinci kez kayıt yapmak istediğimde oluyor ilk bölümü kaydediyor ikincide hatayı alıyorum ayrıca datagridde ikinci yani boş satıra tıklayıp textboxa yazı yazmak için tıklıyorum ve ilk kayıtı geri yüklüyor textboxlara sebebini biliyor musunuz ?
kayıt yaptıktan sonra bağlantıyı kapattınızmı? “con.Close();”
Yeni kayıt eklerken için textboxları boşaltma yöntemi olarak datagride tıklamak yerine kaydetme işlemi bittikten sonra en sona
textbox1.text=””;
textbox2.text=””;
..
şeklinde kod satırı ekleyebilirsiniz.
Evet con.close kodunu yaptım zaten ama sıkıntım şu ki ben kayıt yaptıktan sonra mesela datagrid teki 3. satıra tıkladım atıyorum daha sonra tekrar bir şey kayıt etmek için textboxa tıkladığımda bana diğer kayıttaki bilgileri tüm textboxlara dolduruyor silip kayıt dediğimde ise executenonquery hatasını alıyorum
öğrenci numarasını girdikten sonra farklı bir textbox’a tıklamadığınız zaman olabilir. O alan birincil anahtar olduğundan aynı değeri giriyormuşsunuz gibi algılıyor olabilir. İsterseniz kayıt ekleme işlemini farklı bir formdan gerçekleştirebilirsiniz.
http://www.yazilimkodlama.com/programlama/c-farkli-formdan-kayit-ekleme-ve-anaform-daki-datagridviewin-guncellenmesi/
deneyeceğim teşekkür ederim.
sizinle biraz daha detaylı konuşabilmek için mail veya face’niz var mı ?
ahmet.cansever@yandex.com.tr
merhaba dediğiniz kodlarda bir sıkıntı yaşamıyorum ama güncelle butonuna tıkladığımda executenonquery hatası veriyor düzenlemiyor yani yardımcı olursanız sevinirim.
cmd.CommandText satırını konrol edin. alan adları türleri vs. eğer int türünde değerleriniz varsa ‘ (tek tırnak) kullanmışsanız kaldırın.
http://www.yazilimkodlama.com/programlama/c-ile-access-veritabaninda-kayit-degistirme-update/ bulinkte kayıt güncelleme videosunu da inceleyebilirsiniz.
gece baktığımda bir şey bulamamıştım hatalı ama akşam tekrar bakayım teşekkürler
Merhaba,
Access dosyasını bilgisayarda herhangi bir yere atıp ordan veriyi alabiliyoruz peki bu işlemi web sayfası kurmak için açılan bir host’dan çekmek için kullanabilirmiyiz. örnek olarak http://www.yazilimkodlama.com/dosya/veritabani.accdb konumundaki dosyadan veri alma ve yazma imkanımız varmı ? varsa nasıl yaparız
şimdiden teşekkür ederim.
https://support.office.com/tr-tr/article/Web-de-payla%C5%9Fmak-%C3%BCzere-bir-Access-veritaban%C4%B1-olu%C5%9Fturma-cca08e35-8e51-45ce-9269-8942b0deab26
teşekkürler inceleyip denedikden sonra sonucu yazıcam.
Merhaba çok güzel anlatmışsınız çok teşekkürler. Ben yazılımda yeniyim ilk defa uğraşıyorum bir hata çıkıyor yardımcı olursanız sevinirim datagridview de cellenter yapmışsınız ama bende CellContentClick çıkıyor değiştiremedim nasıl ayarlayabilirim bunu?
datagrid üzerinde bir kez tıkladıktan sonra properties(özellikler) penceresinde şimşek simgesinin üzerine tıklayıp buradan CellEnter event’ ını bulup çift tıklayabilirsiniz.
Çok teşekkür ederim
The connection was not closed. The connection’s current state is open. Şimdi ise bu hatayı alıyorum
Bir yerde
con.Close(); kodunu yazmayı unutmuş olabilirsiniz.
Hepsindede kapatmışım CellEnter yapmadan önce hatasız çalışıyordu elemanı datagridviewe hatasız ekliyor ama sütunlar boş görünüyordu değiştirdikten sonra bu hatayı verdi bir bağlantısı olabilir mi
Bir yerde yazım yanlışı yada unuttuğunuz bir satır olabilir. Dilerseniz alttaki linkten projeyi indirip kontrol edebilirsiniz.
https://yadi.sk/d/gf5VVy4yg5oTz
teşekkür ederim tekrar
Merhaba.
textbox’a ” ‘ ” tek tırnak yapınca
http://i.hizliresim.com/YW21b2.jpg
Şeklinde bir hata veriyor ” ‘ ” tek tırnak koyma şansım varmı varsa nasıl yardımcı olursan teşekkür ederim.
Örnek üzerinden cevap vereyim. Update için mesela
cmd.CommandText = “update ogrenci set ogr_ad='” + tbad.Text.Replace(“‘”, “””) + “‘,ogr_soyad='” + tbsoyad.Text + “‘,ogr_tel='” + tbtel.Text + “‘ where ogr_no=”+tbno.Text+””;
Bu şekilde yazarak yani Replace ile değiştirerek tek tırnak kaydetmesini sağlayabilirsiniz.
Datagridviewe girdigim verilerin tamamini butoona basinca accese kaydermesini istiyorum yardimci olacak var mi
http://www.yazilimkodlama.com/sql-server-2/c-datag… konusunu inceleyebilirsiniz.
Merhaba
Access dosyası exe nin yanında olmak zorundamı yoksa ben bu Access dosyasını mesela "C:Program FilesSKS" gibisinden bir konuma atıp ordan veri çekebilirmiyim.
İstediğiniz konuma koyabilirsiniz. Dediğiniz gibi dosya yolunu da o şekilde gostermelisiniz.
Şirket Bilgisarındayım ve sanırım bu pc den kaynaklı bir sorundan ötürü olmuyormuş cevap için teşekkürler eve geçince uygulayabilirim.
ekleme silme güncelleme olayları sorunsuz bir şekilde çalışmakta fakat benim öğrenmek istediğim bir şey daha var access'e link kısmı oluşturup oraya girdiğimiz linki mesela video linki koyduk c# da yaptığımız programdan linke basınca link sayfasına atmasını sağlayabilirmiyiz.
http://www.yazilimkodlama.com/c-2/c-datagridview-h… örneğini inceleyebilirsiniz.
con.Open(); kısmında hata alıyorum, bağlantı cümlesinde hiç bir sıkıntı yok
Merhaba Benim datagridwiewleri birleştirmek isitiyorum yardımcı olursanız sevinirim.Teşekkürler
Merhaba
Benim ihtiyacım olan bir kaydı seçmek değilde 10 kayıt'ın bir okul ismini seçip aynı anda bir butonla değiştirmek bunu yapabilirmiyim.Eğer böyle bir çalışma mantığı varsa söylebilirmisiniz.Teşekkürler…
progran.cs nin kodlarını yazarmısınız
using System.Threading.Tasks; burdaki tasks in altını çiziyo ve çalışmıyor acil yardımcı olursanız sevinirim
https://yadi.sk/d/gf5VVy4yg5oTz
Merhaba arkadaşlar benim C# da personel tablosu ile ilgili bir kaç sorum var. Yardım edebilir msiniz?
Sorularınız nedir?
da.Fill(ds,"TABLO1"); alanında hata veriyor. From yan tümcesinde sözdizimi hatası diyor.
Select *From….
Sql cümlenizi kontrol edin.Tablo adınızı düzgün yazdığınızdan emin olun.
İyi günler bir projem mevcut ve bu projede her şeyi ayarlamış olmama rağmen con.Open(); kısmında hata alıyorum yardımcı olabilir misiniz
Bağlantı cümlesini kontrol edin.
accesse kaydedilen veriler gözükmüyor bunun sebebi nedir acaba bi yardım edebilirmisiniz
Hata veriyor mu?
Yazım yanlışı olup olmadığını,access alan adlarını vs. kontrol edin.
hayır hiç bi hata yok kodları çalıştırdım kaydınız başarılı ile gerçekleşmiştir mesajıda geliyo kayıtlar datagrıdview nesnesinde gözüküyor ama accessi açıp baktıgımda kayıtları göremiyorum bi ara kayıtlar geldi sonra tekrar görünmüyor acaba kod eklentisi yapıldığında gözükmüyor olabilrmi ?
Dediğiniz gibi olabilir. Benzer bir proje linki veriyorum. İsterseniz indirip inceleyebilirsiniz. https://yadi.sk/d/2xacA2_OfqzxP
Tam olarak aynı sorundan muzdaribim. Bütün işlemler gridde görünüyor fakat programı açıp kapattığım zaman veri tabanında ki eski veriler geliyor. Veri tabanı en ufak bir etki almıyor.
Vermiş olduğum linkdeki projeyi indirip incelermisiniz.Yada yapmış olduğunuz projeyi yollarsanız ilgilenebilirim. https://yadi.sk/d/2xacA2_OfqzxP
rar şifresi gerekiyor rar şifresi nedir ?
şifresiz.
Benim eklediğim kayıt en başa geliyor halbuki sona gelmesi lazım yardım
http://www.yazilimkodlama.com/sql-server-2/sql-ser… konusunu inceleyebilirsiniz
Herşey çalıştı ancak Data Gridde seçili sütun Textboxlara gitmiyor ve nesne isimleri de doğru.
Nasıl düzeltebilirim kodu kopyala yapıştır yaptım ve kendi verdiğim textbox isimlerine göre düzenledim
Hocam 'Microsoft.ACE.Oledb.12.0' sağlayıcısı yerel makine kayıtlı değil. hatasını alıyorum herşey aynı dediğiniz gibi neden acaba
Yukarıda menüden PROJECT– Burada en altta Properties' e tıklayıp açılan pencerede soldan Build' i seçip Platform Target Bölümüne Any CPU seçin.
Hocam kaydet butonuna tikladigimda bana osibka v instrukciy INSERT INTO yaziyor ne yapabilirim ?
Hocam benim acces ile visual studio aynı projede çalistirmam gerekiyor yani access te bir form açıp buton atacağım butona bastığım zaman da c# taki form sayfası gözükecek bunu yapmam mümkun mudur ?? Acil cevap atarsaniz sevinirim ???
admin ben meslek lisesi ögrencisiyim benim için bir tane c# form da veri tabanında arama yapma örneği yapıp e postayla atarmısın.proje ödevim varda yardımcı olursan cok sevinirim. 11 derslik ders . e postam karakartal1903.23@hotmail.com.
arkadaş sen şimdi mezun olunca programcı mı olmuş olacaksın herşeyi hazırdan bekleyen ?
merabalar bu projenin güncelle ve silme kısmını bir türlü çalıştıramadım nasıl çalışıyor acaba
Kontrollere ait Name özelliklerine dikkat ettiniz mi? Birde ne tür bir hata aldığınızı yazarsanız yardımcı olabilirim.
merhaba hocam benim aynı projede açtığım ayrı formlarda birinde kayıt yaptırıp diyer formda da gridwiev koyup orada gösterme gibi bir durumum var kayıt yapıyorum ama diyer formda göstertemiyorum. gridwiev deki forma hangi komutları yazmam lazım ?
http://www.yazilimkodlama.com/programlama/c-farkli…
admin ExecuteNonQuery hatası veriyor nedeni ne olabilir?