VB.NET'te access database'ine UPDATE yaparken inanılmaz bir hata

Bu konuyu okuyanlar

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
Arkadaşlar vb.net ile receiverlerin master kodlarını gösteren basit bir uygulama yapıyordum ve inanılmaz bir durum ile karşılaştım bilgilerim datagridview'de görüntüleniyor satırlardan birine tıklatınca her sütundaki bilgi karşılığı olan textbox'ta görüntüleniyor ve yeni kayıt kaydet değiştir sil şeklinde butonlar yaptım textbox'lardan yeni bilgiler girebiliyorum yada var olanları silebiliyor yada değiştirebiliyorum sorun şu, bir receiver markasının master kodları ile ilgili bir yazıyı bir türlü database'ye giremiyorum bu bilgiyi yazı değil kod olarak algılıyor ve eksik imleç var diyor her bilgiyi girebiliyorum hiç sorun yok ama sadece bir bilgiyi girerken hatayı veriyor textbox içine girdiğim bilgi ne olursa olsun bunu insert yada update yaparken bunu kod olarak değil yazı olarak görüp değerlendirmesini nasıl sağlarım
Hata kodu uyarısı
"PIN KODU: Uzaktan kumandadan KIRMIZI,YEŞİL,SARI,MAVİ tuşlarıyla yapılır. Yapılan işlem sonucu Fabrika Ayarlarına dönülemez ise receiver'ın televizyon ile bağlantısı "AV" veya "RF" kablosu yardımıyla sağlanır. Televizyondan görüntü alındıktan sonra receiv' sorgu ifadesi içindeki Sözdizimi hatası (eksik işleç)"

Tam tamına girdiğim metin
Kod:
PIN KODU: Uzaktan kumandadan KIRMIZI,YEŞİL,SARI,MAVİ tuşlarıyla yapılır. Yapılan işlem sonucu Fabrika Ayarlarına dönülemez ise receiver'ın televizyon ile bağlantısı "AV" veya "RF" kablosu yardımıyla sağlanır. Televizyondan görüntü alındıktan sonra receiver'ın ön panelinden 3 defa arka arkaya EXIT tuşuna basılır. Ardından uzaktan kumandadan 2 tuşuna basılır. Televizyonun ekranında "OLUMLU" mesajı görüldükten sonra yine receiver'ın ön panelinden 3 defa EXIT tuşuna basılır ve ardından uzaktan kumandadan 1'e basılır. Cihaz Fabrika Ayarlarına döner.
Uygulama kodum
Kod:
Imports System.Data.OleDb

Public Class Form1
    Private baglanti As New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=Bilgi.mdb")
    Private komut As New OleDbCommand()
    Private guc As New OleDbDataAdapter()
    Private gecici_tablo As New DataSet()


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        baglanti.Open()
        Dim guc As New OleDbDataAdapter("select * From Receiver", baglanti)
        guc.Fill(gecici_tablo, "Receiver")
        DataGridView1.DataSource = gecici_tablo
        DataGridView1.DataMember = "Receiver"
        guc.Dispose()
        baglanti.Close()

        textBox1.DataBindings.Add("Text", gecici_tablo, "Receiver.BASLIK")
        textBox2.DataBindings.Add("Text", gecici_tablo, "Receiver.NOTLAR")
        textBox3.DataBindings.Add("Text", gecici_tablo, "Receiver.TARIH")
    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        baglanti.Open()
        komut.Connection = baglanti
        komut.CommandText = (("INSERT INTO Receiver(BASLIK,NOTLAR,TARIH) VALUES ('" + textBox1.Text & "','") + textBox2.Text & "','") + TarihText.Text & "') "
        komut.ExecuteNonQuery()
        komut.Dispose()
        baglanti.Close()
        gecici_tablo.Clear()
        listele()
        goster()
    End Sub

    Private Sub button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button4.Click

        baglanti.Open()
        komut.Connection = baglanti
        komut.CommandText = (("UPDATE Receiver SET NOTLAR='" + textBox2.Text & "',TARIH='") + TarihText.Text & "' WHERE BASLIK='") + textBox1.Text & "'"
        komut.ExecuteNonQuery()
        komut.Dispose()
        baglanti.Close()
        gecici_tablo.Clear()
        listele()
        goster()
    End Sub

    Private Sub listele()
        baglanti.Open()
        Dim guc As New OleDbDataAdapter("select * From Receiver", baglanti)
        guc.Fill(gecici_tablo, "Receiver")

        DataGridView1.DataSource = gecici_tablo
        DataGridView1.DataMember = "Receiver"

        DataGridView1.Columns(0).Visible = False ' Birinci Sütundaki SIRA Sütunu DataGridView'de gizlenir görünmesine gerek yok
        ' DataGridView1'de sütunların genişliği ayarlanır
        DataGridView1.Columns(1).Width = (160)
        DataGridView1.Columns(2).Width = (268)
        DataGridView1.Columns(3).Width = (70)
        ' DataGridView1'de sütun başlıklarında görünen isimler belirtilir
        DataGridView1.Columns(1).HeaderText = "Başlık"
        DataGridView1.Columns(2).HeaderText = "Bilgi"
        DataGridView1.Columns(3).HeaderText = "KayıtTarihi"
        guc.Dispose()
        baglanti.Close()
    End Sub

    Private Sub goster()
        textBox9.Text = (Me.BindingContext(gecici_tablo, "Receiver").Position + 1) & " / " & Me.BindingContext(gecici_tablo, "Receiver").Count
    End Sub

End Class
 

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
Bilen kimse yokmu arkadaşlar receiver'in kelimesi hata veriyor yani tam olarak ( ' ) işareti hatayı veriyor yazı içerişsinde ' ayıraç işareti kullanılmış ise database'e ne ekleme yapabiliyorum nede bir kaydı güncelleme yapabiliyorum bu ayıracı string olarak değil kod olarak algılıyor bu problemi nasıl çözerim ayıraç dahil her karakteri kullanabilmeliyim

Convert.ToString(textBox2.Text)
textBox2.Text$
şeklinde kodlar denedim sonuç olumsuz
 

N3CAT1

Dekan
Emektar
Katılım
20 Nisan 2008
Mesajlar
6,609
Reaksiyon puanı
144
Puanları
63
Sorununu tırnak işareti kullanılan yerlerde tırnak işaretini 2 defa kullanarak çözebilirsin. Yani sql cümlen şu şekilde olsun:

string sql="Insert Into Table1(ad,soyad) values('adım necati'dir', 'soyadım ...');";
sql = sql.Replace("'", "''");

komutuyla necati'dir yazan yerdeki tek tırnak işareti 2 defa kullanılarak necati''dir oluyor.
 

PUSKAS_65

Öğrenci
Katılım
20 Temmuz 2009
Mesajlar
49
Reaksiyon puanı
1
Puanları
8
arkadaşım bende c#ta form application olarak var istersen gönderebilirim
 

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
Arkadaşlar sorunu çözdüm ama vb.net bilgim dahilinde yapabildiğimi yaptım fakat şimdide bir eksiklik var bakarmısınız problemi şöyle çözdüm textbox'lara girilen karekterlerde olmasını istemediğim karekterleri unicode karekterlerle replece ettim ve access database'ye veriler böyle kaydediliyor textbox'ların textchange olayınada işlemin tam tersini uyguladım datagrid içinden seçim yapıldığında herşey textbox'larda düzgün görünüyor ama datagridview'de unicode karekterleri görülüyor ben textchange olayının aynısını datagridview'dede uygulamak istiyorum veriler buraya yüklenince dönüştürülmüş olsunki yazılar olması gerektiği gibi görünsün bunu nasıl yapabilirim işin içinden çıkamadım sorunu nasıl çözdüğüme bakarmısınız! (dönüştürme işleminde sorun çıkmasın diye kolay kolay denk gelmeyecek karekterler kullanmaya çalıştım hayatımda pek görmediğin unicode karekterlerini kullanmaya gayret ettim)

Kod:
Imports System.Data.OleDb

Public Class Form1
    Private baglanti As New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=Bilgi.mdb")
    Private komut As New OleDbCommand()
    Private guc As New OleDbDataAdapter()
    Private gecici_tablo As New DataSet()


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        baglanti.Open()
        Dim guc As New OleDbDataAdapter("select * From Receiver", baglanti)
        guc.Fill(gecici_tablo, "Receiver")
        DataGridView1.DataSource = gecici_tablo
        DataGridView1.DataMember = "Receiver"
        guc.Dispose()
        baglanti.Close()

        textBox1.DataBindings.Add("Text", gecici_tablo, "Receiver.BASLIK")
        textBox2.DataBindings.Add("Text", gecici_tablo, "Receiver.NOTLAR")
        textBox3.DataBindings.Add("Text", gecici_tablo, "Receiver.TARIH")
    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        VeriKontrolu(textBox1.Text)
        VeriKontrolu(textBox2.Text)

        baglanti.Open()
        komut.Connection = baglanti
        komut.CommandText = (("INSERT INTO Receiver(BASLIK,NOTLAR,TARIH) VALUES ('" + textBox1.Text & "','") + textBox2.Text & "','") + TarihText.Text & "') "
        komut.ExecuteNonQuery()
        komut.Dispose()
        baglanti.Close()
        gecici_tablo.Clear()
        listele()
        goster()
    End Sub

    Private Sub button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button4.Click
        VeriKontrolu(textBox1.Text)
        VeriKontrolu(textBox2.Text)

        baglanti.Open()
        komut.Connection = baglanti
        komut.CommandText = (("UPDATE Receiver SET NOTLAR='" + textBox2.Text & "',TARIH='") + TarihText.Text & "' WHERE BASLIK='") + textBox1.Text & "'"
        komut.ExecuteNonQuery()
        komut.Dispose()
        baglanti.Close()
        gecici_tablo.Clear()
        listele()
        goster()
    End Sub

    Private Sub listele()
        baglanti.Open()
        Dim guc As New OleDbDataAdapter("select * From Receiver", baglanti)
        guc.Fill(gecici_tablo, "Receiver")

        DataGridView1.DataSource = gecici_tablo
        DataGridView1.DataMember = "Receiver"

        DataGridView1.Columns(0).Visible = False ' Birinci Sütundaki SIRA Sütunu DataGridView'de gizlenir görünmesine gerek yok
        ' DataGridView1'de sütunların genişliği ayarlanır
        DataGridView1.Columns(1).Width = (160)
        DataGridView1.Columns(2).Width = (268)
        DataGridView1.Columns(3).Width = (70)
        ' DataGridView1'de sütun başlıklarında görünen isimler belirtilir
        DataGridView1.Columns(1).HeaderText = "Başlık"
        DataGridView1.Columns(2).HeaderText = "Bilgi"
        DataGridView1.Columns(3).HeaderText = "KayıtTarihi"
        guc.Dispose()
        baglanti.Close()
    End Sub

    Private Sub goster()
        textBox9.Text = (Me.BindingContext(gecici_tablo, "Receiver").Position + 1) & " / " & Me.BindingContext(gecici_tablo, "Receiver").Count
    End Sub


    Public Shared Function VeriKontrolu(ByRef Yazi_ARA As String) As String
        'Karakter kontrolu
        Yazi_ARA = Yazi_ARA.Replace("["c, "₳"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("]"c, "₲"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("!"c, "₱"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace(","c, "₰"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("("c, "₯"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace(")"c, "₮"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("$"c, "₭"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("£"c, "₫"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("%"c, "₪"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("="c, "₩"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace(":"c, "₵"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("#"c, "₴"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("|"c, "⌂"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("'"c, "◌"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("\"c, "╬"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace(""""c, "╘"c).ToString()
        'Özel metin kontrolu
        Yazi_ARA = Yazi_ARA.Replace("and", "‡JZCgH5orHPP6‡").ToString()
        Yazi_ARA = Yazi_ARA.Replace("or", "‡2buN8o7p257U‡").ToString()
        Yazi_ARA = Yazi_ARA.Replace("exit", "‡N3w3PYTHwnp2‡").ToString()
        Yazi_ARA = Yazi_ARA.Replace("begin", "‡6hNN5yU68Lrc‡").ToString()
        Yazi_ARA = Yazi_ARA.Replace("select", "‡Mo7RU6txiur9‡").ToString()
        Yazi_ARA = Yazi_ARA.Replace("from", "‡9rnXDRT6gh2T‡").ToString()

        Return Yazi_ARA
    End Function


    Public Shared Function VeriKontroluTers(ByRef Yazi_ARA As String) As String
        'Karakter kontrolu
        Yazi_ARA = Yazi_ARA.Replace("₳"c, "["c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("₲"c, "]"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("₱"c, "!"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("₰"c, ","c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("₯"c, "("c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("₮"c, ")"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("₭"c, "$"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("₫"c, "£"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("₪"c, "%"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("₩"c, "="c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("₵"c, ":"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("₴"c, "#"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("⌂"c, "|"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("◌"c, "'"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("╬"c, "\"c).ToString()
        Yazi_ARA = Yazi_ARA.Replace("╘"c, """"c).ToString()
        'Özel metin kontrolu
        Yazi_ARA = Yazi_ARA.Replace("‡JZCgH5orHPP6‡", "and").ToString()
        Yazi_ARA = Yazi_ARA.Replace("‡2buN8o7p257U‡", "or").ToString()
        Yazi_ARA = Yazi_ARA.Replace("‡N3w3PYTHwnp2‡", "exit").ToString()
        Yazi_ARA = Yazi_ARA.Replace("‡6hNN5yU68Lrc‡", "begin").ToString()
        Yazi_ARA = Yazi_ARA.Replace("‡Mo7RU6txiur9‡", "select").ToString()
        Yazi_ARA = Yazi_ARA.Replace("‡9rnXDRT6gh2T‡", "from").ToString()

        Return Yazi_ARA

    End Function

    Private Sub textBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles textBox1.TextChanged
        VeriKontroluTers(textBox1.Text)

    End Sub

    Private Sub textBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles textBox2.TextChanged
        VeriKontroluTers(textBox2.Text)
    End Sub

End Class
 
Üst