Kod bloğum aşağıda
"Bağlantı kapatılmadı. Bağlantının geçerli durumu: açık." hatası veriyor
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim sayi1 As Integer sayi1 = CInt(TextBox2.Text) TextBox2.Text = sayi1.ToString("C") SetMyCustomFormat() bag.Open() kmt.CommandText = "SELECT Count(id) from koop" Dim a As Integer Dim idsorgu a = kmt.ExecuteScalar() idsorgu = "SELECT id from koop" kmt = New OleDbCommand(idsorgu, bag) Dim reader As OleDbDataReader = kmt.ExecuteReader() Dim b As Integer Dim sorgu Dim c For b = 1 To a reader.Read() sorgu = " SELECT plaka from koop where id=(" & reader(0).ToString() & ")" kmt = New OleDbCommand(sorgu, bag) c = kmt.ExecuteScalar() kmt.CommandText = "INSERT INTO aidat(plaka, MakbuzNo, Tarih, Miktar,Donem) VALUES ('" & c.ToString() & "','" & TextBox1.Text & "','" & DateTimePicker1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "') " kmt.ExecuteNonQuery() uret() Next bag.Close() uret() End Sub
Sub uret() Randomize() Dim sayi1 = Format(Now, "yyyy") & Int(Rnd(1) * (100000)) Dim ure TextBox1.Text = sayi1 Dim Makbuzno = TextBox1.Text kmt.Connection = bag bag.Open() ure = "Select Makbuzno From aidat Where Makbuzno=" + TextBox1.Text + " " kmt = New OleDbCommand(ure, bag) Dim dr As OleDbDataReader dr = kmt.ExecuteReader Do While dr.Read If dr("Makbuzno") = Makbuzno Then Randomize() sayi1 = Format(Now, "yyyy") & Int(Rnd(1) * (100000)) TextBox1.Text = sayi1 End If Loop bag.Close() End Sub
Toplam 1 cevap
Connection yani bağlantı masraflı bir işlemdir. Yani sistem kaynaklarını meşgul eder ve tüketir.
O sebepten bir bağlantı açtığında olabildiğince kısa sürede kapatman gerekir.
Bağlantıyı açtıkdan sonra bağlantı açıkken, aşağıdaki gibi değişken tanımlama, atama yapma gibi işlemleri yapmamalısın.
SetMyCustomFormat() bag.Open() kmt.CommandText = "SELECT Count(id) from koop" Dim a As Integer Dim idsorgu
Bunları bağlantının dışında yapmalısın.
degiskenTanimla atamaYap ...... ...... ...... baglanti.Ac baglantiUzerindenSorgunuCalistir baglantiKapat ......
Eğer sorgu sonucunda veritabanından dönen değer varsa bunu Dataset, datatable gibi bağlantısız çalışacak bir nesne üzerine doldurmalısın. Daha sonra bu veri üzerinde işlem yapmalısın.
Bağlantın açıkken (Buton1 click olayında) sen yine başka bir bağlantı açılıyorsun(uret).
Bu yüzden Bağlantı kapatılmadı. Bağlantının geçerli durumu: açık. hatası alıyorsun.