asp.net acces update sorunu

Kodla Büyü

narcin

Site Gezgini
Mesajlar
94
benim şöyle bir sorunum var personel id sini aldığım personelin bilgilerini düzenleyip acces veri tabanına update yapmak istiyorum ama bir türlü yapamadım

ya hata veriyor

yada hiç bir işlem yapmadan diğer sayfaya yönlendiriyor
personel id veri tabanında int

kodlarım şunlar

string id = "";
id = Request.QueryString["p_id"].ToString();

string veri = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/App_Data/haberveritabani.mdb");
OleDbConnection baglanti = new OleDbConnection(veri);

baglanti.Open();
OleDbCommand cmd = new OleDbCommand("Update personel Set adi='" + ad.Text + "' Where pesronel_id='" + "id" + "'", baglanti);
baglanti.Open();
cmd.ExecuteNonQuery();


baglanti.Close();
Response.Redirect("personelduzenle.aspx?durum=tamam");





kodu şu şekilde yaptım gene olmadı


OleDbCommand cmd = new OleDbCommand("Update personel Set adi='" + ad.Text + "' Where pesronel_id='" + "converto.int32(id)" + "'", baglanti);
baglanti.Open();
 
Hocam ilk gözüme çarpan hatanız siz veri tabanını bağlantınızı kapattıktan sonra SQL komutunu çalıştırmaya çalışıyorsunuz. Aşağıdaki gibi denermisiniz? Ayrıca hata aldığınız hatayı yazarsanız daha çok yardımcı olabilirim. Birde hocam veri tabanındaki alan adı ile sorgunuzdaki alan adlarının aynı olmasına dikkat edin. (Mesela: Where pesronel_id değilde personel_id olabilir. )
string veri = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/App_Data/haberveritabani.mdb");
OleDbConnection baglanti = new OleDbConnection(veri);

baglanti.Open();
OleDbCommand cmd = new OleDbCommand("Update personel Set adi='" + ad.Text + "' Where personel_id='" + "id" + "'", baglanti);
cmd.ExecuteNonQuery();
baglanti.Close();
 
sayın hocam sanırım VT deki id sütunun int ve auto increment bir alan. senin yuarıda kullandıgın sql cümlesinde id ye eşleştirmeye çalıştıgın veriyi int cevirmek yerine parametre tanımlayıp onu sql cümlende kullanmalısın.

komut.Parameters.AddWithValue("@uid",id);

OleDbCommand cmd = new OleDbCommand("Update personel Set adi='" + ad.Text + "' Where pesronel_id='@uid', baglanti);

bu şekilde kullanırsan çalışacaktır.

konuyla ilgili anlaşılmayan yer varsa google a
komut.parameters.addwithvalue

yazıp incelersen anlatmak istediğimi daha iyi anlarsın.
 
OleDbCommand cmd = new OleDbCommand("Update personel Set adi='" + ad.Text + "' Where personel_id='" + "id" + "'", baglanti
" " ç,ft tırman içinde olması gerekmiyor sanırım

OleDbCommand cmd = new OleDbCommand("Update personel Set adi='" + ad.Text + "' Where personel_id='" + id + "'", baglanti);
şeklinde olabilir bir deneyin hocam
 
string id = "";
id = Request.QueryString["p_id"].ToString();

string veri = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/App_Data/haberveritabani.mdb");
OleDbConnection baglanti = new OleDbConnection(veri);

baglanti.Open();
OleDbCommand cmd = new OleDbCommand("Update personel Set adi='" + ad.Text + "' Where personel_id='"+Convert.ToInt32(id)+"'", baglanti);
cmd.ExecuteNonQuery();

baglanti.Close();
Response.Redirect("personelduzenle.aspx?durum=tamam");

bunu da denedim olmadı
string id = "";
id = Request.QueryString["p_id"].ToString();
string veri = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/App_Data/haberveritabani.mdb");
OleDbConnection baglanti = new OleDbConnection(veri);

baglanti.Open();
OleDbCommand cmd = new OleDbCommand("Update personel Set adi='" + ad.Text + "' Where personel_id='"+id, baglanti);

cmd.ExecuteNonQuery();


baglanti.Close();
buda olmadı
 
Kodunuzun başlangıcına breakpoint koyarak, programı bu satırda durdurmayı, daha sonra satır satır çalıştırmayı ve kontrol etmeyi deneyiniz.

Break point koymak için kod satırının sol tarafındaki bölmeye tıklamanız yeterli. Kırmızı bir nokta çıkacaktır.
Daha sonra F5 ile siteyi çalıştırın ve butona tıklayın. İşlem sırası bu satıra gelince program duracaktır.
Kodlarınızı satır satır ilerletmek için F11 tuşunu kullanınız.

Kontrol sırasında değişkenlerin üzerine fare ile geldiğinizde içerisindeki değerler görünecektir.
Hatanın hangi satırdan kaynaklandığını bu şekilde bulabilirsiniz.

Tahiminimce p_id değeri doğru olarak gelmiyor olabilir.

bp.jpg
 
baglanti.Open();
OleDbCommand cmd = new OleDbCommand("Update personel Set adi='" + ad.Text + "' Where personel_id='"+" & id & "", baglanti);

cmd.ExecuteNonQuery();

Bu kısma dikkat edip deneyin hocam bi
 
OleDbCommand cmd = new OleDbCommand("Update personel Set adi='" + ad.Text + "' Where pesronel_id='" + "id" + "'", baglanti);

bu kodu şu şekilde düzenle hallolur hocam

OleDbCommand cmd = new OleDbCommand("Update personel Set adi=' " + ad.Text + " ' Where pesronel_id = " + id , baglanti);
 
protected void Page_Load(object sender, EventArgs e)
{
try
{ id = Request.QueryString["p_id"].ToString(); }
catch { }
string veri = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/App_Data/haberveritabani.mdb");
OleDbConnection baglanti = new OleDbConnection(veri);
OleDbCommand komut = new OleDbCommand("select * from personel where personel_id =" + id, baglanti);
baglanti.Open();
OleDbDataReader oku = komut.ExecuteReader();

while (oku.Read())
{
ad.Text = oku.GetString(1);
soyad.Text = oku.GetString(2);
mail.Text = oku.GetString(4);
resim = oku.GetString(5);
Image1.ImageUrl = oku.GetString(5);
brans.Text = oku.GetString(6);
gorev.SelectedValue = oku.GetString(7);
dtarihi.Text = oku.GetString(8);
dyeri.Text = oku.GetString(9);
mezuniyet.Text = oku.GetString(10);
geldigit.Text = oku.GetString(11);
geldigio.Text = oku.GetString(12);
if (oku.GetString(3) == "bay")
bay.Checked = true;
else
bayan.Checked = true;

}

baglanti.Close();




}

sorunu buldum load eventindeki bu kısmı kaldırırsam text boxlara hiç bişey yazılmıyo ama günccelleme yapıyo fakat eğer o kodları eklersem anladığım kadarıyla text boxlardaki ilk değeri tekrar atıyo yani hiç değişmemiş gibi oluyo nasıl çözcem ?
 
if (!ispostback) ile bu çözülebilir. Form load kısmındaki kodları bu if bloku içerisinde yazarsanız sadece ilk yüklenmede çalışır. Butona tıklandığında form yeniden yüklendiğinde çalışmaz.

Kod:
if(!IsPostBack)
{
......
}
 
eyvallah oldu :d aslında bende yazmıştım postback olayını ama çalıştıramamıştım :D senin klavyen kuvvetliymiş hocam sağol :D
 
Geri
Üst