Gateway_man Geschrieben 4. Oktober 2009 Geschrieben 4. Oktober 2009 hi leute, folgendes problem liegt vor: Ich habe eine lokale sqlce DB vorliegen. Diese wird benutzt um die Emails in plain sowie html from zu speichern. Die Abfrage sieht in etwa so aus : cmd.CommandText = "INSERT INTO Posteingang(Absender, Betreff, Datum, Größe, Inhalt, htmlbool, htmlinhalt) Values('" & from & "', '" & subject & _ "', '" & [date] & "', '" & sizeText & "', '" & textbody & "', '" & IIf(htmlbody IsNot Nothing, "True", "False") & "', '" & IIf(htmlbody IsNot Nothing, htmlbody, Nothing) & "')" So nun bekomme ich bei manchen Mailtexten folgenden fehler: Fehler beim Analysieren der Abfrage.[Token line number = 1185, Token line offset = 352, Token in error = t] Der fehler sagt mir leider wenig, was ich vermute ist, das im html text folgendes Zeichen enthalten ist (') welches verständlicherweise zu problemen bei der Abfrage führt, da die Werte durch (') getrennt werden. Ich wage mich daran erinnern zu können das es eine möglichkeit gibt die stringvariable so zu modifizieren das der sql befehl alle zeichen im string ignoriert und diese einfach in die dafür vorgesehene Column speichert. Wenn ich falsch liege korrigiert mich bitte, wie gesagt der Fehler sagt mir wenig deswegen stelle ich nur vermutungen an. Lg Gateway
chrixko Geschrieben 4. Oktober 2009 Geschrieben 4. Oktober 2009 Stichwort: "Parametrisierte Abfragen" Hier findest du was dazu: Verhinderung von SQL Injection Marke .NET Es geht zwar um SQL-Injection aber ist praktisch genau dein Problem
Gateway_man Geschrieben 5. Oktober 2009 Autor Geschrieben 5. Oktober 2009 Danke dir, habe bereits eine Lösung. Hier ein beispiel für VB.NET : Dim nr As String = TextBox1.Text cmd1.CommandText = "INSERT INTO Test(Inhalt)VALUES (@nr)" cmd1.Parameters.AddWithValue("nr", nr) Con.Open() cmd1.ExecuteNonQuery() Con.Close() lg Gateway
paslanmazbul Geschrieben 5. Oktober 2009 Geschrieben 5. Oktober 2009 no no no pls good code writer cmd.CommandText = "INSERT INTO Posteingang(Absender, Betreff, Datum, Größe, Inhalt, htmlbool, htmlinhalt) Values('" & from & "', '" & subject & _ "', '" & [date] & "', '" & sizeText & "', '" & textbody & "', '" & IIf(htmlbody IsNot Nothing, "True", "False") & "', '" & IIf(htmlbody IsNot Nothing, htmlbody, Nothing) & "')" erorr [date] date.text or date IIf(htmlbody IsNot Nothing, "True", "False") IIf(htmlbody IsNot Nothing, htmlbody, Nothing) yes code string AyarKayittarih = kayittarih.ToString("dd/MM/yyyy"); baglantitable.Sorgu_Calistir("insert into Sikayet(Eden,Tel,firma,Tarih,Gtarih,acikla,onay) values('"+ TextBox1.Text +"','"+TextBox2.Text+"','"+TextBox3.Text +"','"+ DropDownList7.SelectedValue +"','"+ AyarKayittarih+"','"+TextBox4.Text+"','"+ onaybekle +"' )"); good boy class public static void Sorgu_Calistir(string sql) { MySqlCommand sqlCommand = new MySqlCommand(sql, sqlBaglanti); if (sqlCommand.Connection.State == ConnectionState.Closed) { sqlBaglanti.Open(); } sqlCommand.ExecuteNonQuery(); sqlBaglanti.Close(); } ------
paslanmazbul Geschrieben 5. Oktober 2009 Geschrieben 5. Oktober 2009 no no no pls good code writer cmd.CommandText = "INSERT INTO Posteingang(Absender, Betreff, Datum, Größe, Inhalt, htmlbool, htmlinhalt) Values('" & from & "', '" & subject & _ "', '" & [date] & "', '" & sizeText & "', '" & textbody & "', '" & IIf(htmlbody IsNot Nothing, "True", "False") & "', '" & IIf(htmlbody IsNot Nothing, htmlbody, Nothing) & "')" erorr [date] date.text or date IIf(htmlbody IsNot Nothing, "True", "False") IIf(htmlbody IsNot Nothing, htmlbody, Nothing) yes code string AyarKayittarih = kayittarih.ToString("dd/MM/yyyy"); baglantitable.Sorgu_Calistir("insert into Sikayet(Eden,Tel,firma,Tarih,Gtarih,acikla,onay) values('"+ TextBox1.Text +"','"+TextBox2.Text+"','"+TextBox3.Text +"','"+ DropDownList7.SelectedValue +"','"+ AyarKayittarih+"','"+TextBox4.Text+"','"+ onaybekle +"' )"); good boy class public static void Sorgu_Calistir(string sql) { MySqlCommand sqlCommand = new MySqlCommand(sql, sqlBaglanti); if (sqlCommand.Connection.State == ConnectionState.Closed) { sqlBaglanti.Open(); } sqlCommand.ExecuteNonQuery(); sqlBaglanti.Close(); } ------ Convert VB to C# or C# to VB Code Converter | Provided by Telerik
Gateway_man Geschrieben 6. Oktober 2009 Autor Geschrieben 6. Oktober 2009 no no no pls good code writer cmd.CommandText = "INSERT INTO Posteingang(Absender, Betreff, Datum, Größe, Inhalt, htmlbool, htmlinhalt) Values('" & from & "', '" & subject & _ "', '" & [date] & "', '" & sizeText & "', '" & textbody & "', '" & IIf(htmlbody IsNot Nothing, "True", "False") & "', '" & IIf(htmlbody IsNot Nothing, htmlbody, Nothing) & "')" erorr [date] date.text or date IIf(htmlbody IsNot Nothing, "True", "False") IIf(htmlbody IsNot Nothing, htmlbody, Nothing) yes code string AyarKayittarih = kayittarih.ToString("dd/MM/yyyy"); baglantitable.Sorgu_Calistir("insert into Sikayet(Eden,Tel,firma,Tarih,Gtarih,acikla,onay) values('"+ TextBox1.Text +"','"+TextBox2.Text+"','"+TextBox3.Text +"','"+ DropDownList7.SelectedValue +"','"+ AyarKayittarih+"','"+TextBox4.Text+"','"+ onaybekle +"' )"); good boy class public static void Sorgu_Calistir(string sql) { MySqlCommand sqlCommand = new MySqlCommand(sql, sqlBaglanti); if (sqlCommand.Connection.State == ConnectionState.Closed) { sqlBaglanti.Open(); } sqlCommand.ExecuteNonQuery(); sqlBaglanti.Close(); } ------ I think in this situation the IIF function is the better way. But at least i made it much different. But thank you anyway . Greets, Gateway
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden