selamün aleyküm arkadaşlar veri tabanında çok fena bir hataya yakalandım çözümü bilenler mesaj atarsa sevinirim hata: The connection was not closed. The connection’s current state is open. immediate windows penceresi hatası:at System.Threading.ThreadHelper.ThreadStart()</ExceptionString></Exception></TraceRecord> kodlar: Imports System.Data Imports System.Data.OleDb Public Class Form1 Dim baglanti As New OleDbConnection("provider= Microsoft.ace.oledb.12.0; Data source= database 1.accdb") Dim sonuc As String Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If TextBox1.Text = "" Or TextBox2.Text = "" Then MsgBox("Lütfen Bilgileri Giriniz") Else Dim komut As New OleDbCommand("insert into database 1(ad,soyad) values(’" + TextBox1.Text + "’,’" + TextBox2.Text + "’)", baglanti) baglanti.Open() 'hata burda komut.ExecuteNonQuery() komut.Dispose() baglanti.Close() MsgBox("kayit başarılı") listele() End If baglanti.Close() End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load listele() End Sub Private Sub listele() baglanti.Open() Dim komut As New OleDbDataAdapter("select * from kayit", baglanti) Dim ds As New DataSet komut.Fill(ds) DataGridView1.DataSource = ds.Tables(0) DataGridView1.DataSource = ds.Tables(0) DataGridView1.Columns(0).HeaderText = "ad" DataGridView1.Columns(1).HeaderText = "soyad" baglanti.Close() End Sub End Class
selamün aleyküm arkadaşlar veri tabanında çok fena bir hataya yakalandım çözümü bilenler mesaj atarsa sevinirim hata: The connection was not closed. The connection’s current state is open. immediate windows penceresi hatası:at System.Threading.ThreadHelper.ThreadStart()</ExceptionString></Exception></TraceRecord> kodlar: Imports System.Data Imports System.Data.OleDb Public Class Form1 Dim baglanti As New OleDbConnection("provider= Microsoft.ace.oledb.12.0; Data source= database 1.accdb") Dim sonuc As String Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If TextBox1.Text = "" Or TextBox2.Text = "" Then MsgBox("Lütfen Bilgileri Giriniz") Else Dim komut As New OleDbCommand("insert into database 1(ad,soyad) values(’" + TextBox1.Text + "’,’" + TextBox2.Text + "’)", baglanti) baglanti.Open() 'hata burda komut.ExecuteNonQuery() komut.Dispose() baglanti.Close() MsgBox("kayit başarılı") listele() End If baglanti.Close() End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load listele() End Sub Private Sub listele() baglanti.Open() Dim komut As New OleDbDataAdapter("select * from kayit", baglanti) Dim ds As New DataSet komut.Fill(ds) DataGridView1.DataSource = ds.Tables(0) DataGridView1.DataSource = ds.Tables(0) DataGridView1.Columns(0).HeaderText = "ad" DataGridView1.Columns(1).HeaderText = "soyad" baglanti.Close() End Sub End Class
şaka gibi. hatanın orra olduğunu nerden biliyon. form loadda listele fonksiyonu çalışıyo onun içindeki .open() da hata veriyor olamaz mı?
Açık olan bağlantıyı tekrar açmaya çalıştığında o hata ile kesilir. İki şey yapabilirsin. Ya her bağlantı açtığın fonksiyon girişinde "eğer bağlantı kapalıysa aç", satırı koyacaksın. Yada her bağlantı açtığın fonksiyon sonunda "bağlantı açıksa kapa diyeceksin". Ve bu komutu mutlaka görmesini sağlayacaksın. hata ile yada şarta bağlı bu komutu görmeden çıkmayacak. Yada proje girişinde bir kez bağlantı açıp, proje çıkışında kapayacaksınki ben hiç bunu kullanmadım... Bağlantı açık ise kapat, yada kapalıysa aç komutunun c# karşılığı bu sen VBye çevir. if (baglanti .State == ConnectionState.Closed) baglanti .Open(); // try{dan hemen sonra if (baglanti .State == ConnectionState.Open) baglanti .Close(); // finally bloğunda Al sana eski doklarımdan basit birde örnek... cmd2 sende bağlantı diye geçiyor. dr2 de data reader c# ve VB neredeyse birbirinin aynı o sebeple çevirmeye uğraşmadım... özür... Kod: public double selSumOverall(string myTableName, string myVariableName, string myWHERE, ref string errMsg) { errMsg = ""; cmd2.Connection = conn2; cmd2.CommandText = "SELECT sum(" + myVariableName + ") " + " FROM " + myTableName + " WHERE " + myWHERE; try { conn2.Open(); dr2 = cmd2.ExecuteReader(); if (dr2.Read()) { if (dr2.GetValue(0) != DBNull.Value) return dr2.GetDouble(0); } return 0; } catch (Exception ex) { errMsg = ex.Message; return -1; } finally { if (dr2 != null) dr2.Close(); if (conn2.State == ConnectionState.Open) conn2.Close(); } }
baglanti.Open() olan yerlere if (baglanti .State == ConnectionState.Closed) baglanti .Open(); koymalısın.
VB nin B sini bilmeden nasıl kod yazacaksın kardeş. sen önce ders notlarını bir baştan karıştır. syntax kurallarını da öğren. bu şekilde hiç bir sonuca varamazsın. ne yazdığını biliyorsun ne söyleneni anlıyorsun. akıntıya karşı kürek çekip duruyorsun. önce kürek nasıl çekilir biraz öğren. sonra birileri el atar destek olur.
yunus'da vurdumu öldürüyor... ben c# da yazdım VB karşılığını yaz demiştim... VB.NET karşılığınıda buldum koyuyorum hemen hemen aynı. Kod: If baglanti.State = ConnectionState.Closed Then 'Bağlantıyı açmak baglanti.Open() End If
yunus çok doğru söylüyorsun kardeşim ama insanın bir eğitmeni olmayınca nereden başlayacağını bilmiyor senin bu konuda bilgin varsa bana yol gösterirsen çok sevinirim skype yada face falan varsa sevinirim
sedirağacı kardeş sana gelince baglantı.open yerlerine yazdım ama şimdi komut.ExecuteNonQuery() de şu hatayı veriyor ExecuteNonQuery requires an open and available Connection. The connection's current state is closed. hatası veriyor
Bu seferde bağlantı kapalı demiş... hangi ExecuteNonQuery satırında o hata mesajını verdi ise, o satırın üstüne. If baglanti.State = ConnectionState.Closed Then baglanti.Open() end if koy... yalnız bunlar çok basit kısımlar... bunları kendi başına geçemiyorsan ilerde çok zorlanırsın... acelen yoksa bu tür sorunların cevaplarını bulmaya çalış. Bazen bir tek nokta karakteri eksik diye 3 gün aramışlığım uğraşmışlığım vardır... ararken hep başka şeyleride öğreniyorsun ve çözüyorsun...bu tür aramalar seni iyi programcı yapar. Ayrıca İngilizce karşılık için ben Google ın şu sayfasını kullanıyorum. Google Çeviri yazılanı anlamak için yeterli oluyor.
skypen varmı acaba sedirağacı yada face bu hatalar bitmiyor hem de bana hangi kodların ne işe yaradığınıda anlatabilirsin ordan varsa verirsen sevinirim
@KeySilver facebooku 4 yıldır kullanmıyorum... telefonu yanımda taşımıyorum... whatsapp Skype messanger gibi hiç bir şeyi kurmadım kullanmadım. Yardım için pek vakit ayıramam, çünki bana kodlaması ağır gelen bir site yazmaya çalışıyorum. Beynim duman çıkarmaya başlayıncada buraya ve kısmetse olur sayfasına kafamı dağıtmak için giriyorum. Yani size kafamı dağıtmak için yardım etmeye çalışıyorum. Aşırıya kaçarsam işimi yapamam sitemi bitiremem. Önce yazacağım site ile bütün köşeleri dönmem lazım... sora sizin işlere bakarım... Birde şunu belirteyim. yazılımdan yeni emekliyim ama günde 10 saat ekran başındaysam, 4 saatini internette kod aramak ve çözümlemekle geçiriyorum. Ayrıca İngilizcem çok iyi olmadığından birde çeviri ile uğraşıyorum. Yani yazılımcılık böyle bir şey. Sürekli öğrenme ve araştırma ile geçen bir süreç... Ancak çok uğraşıpda bir türlü aşamadığın konuda yardım istemelisin. İşin raconu budur. ve soruyu kısa ve çok net sormazsan kimse cevap için uğraşmaz, herkesin işi çok...
abi çok güzel dedin, tam düşünüp de ifade edemediğim şeyler. Ayrıca seninle aynı durumdayım.. bir yandan iş, bir yandan proje, arada da kafa dağıtmak için forumlarda takılıyorum.