[.NET] [MySQL] Insert mit "." Werten, werden falsch interpretiert

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von CS-Luck0r, 12. Januar 2012 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 12. Januar 2012
    [MySQL] Insert mit "." Werten, werden falsch interpretiert

    Hallo Zusammen,

    ich habe folgenden Code

    Code:
     Private Function PageIsInDB(ByVal Page As String) As Boolean
     Dim myConnection As New MySqlConnection("Server=localhost;Database=ladezeit;Uid=root;Pwd=;")
     Dim retVal As Integer
     Dim selectStatement As New MySqlCommand()
    
     myConnection.Open()
    
     selectStatement.CommandText = "SELECT * FROM pages WHERE Page LIKE '" & Page & "'"
     selectStatement.CommandType = CommandType.StoredProcedure
    
     selectStatement.Connection = myConnection
     Dim reader As MySqlDataReader = selectStatement.ExecuteReader()
    
     retVal = reader.RecordsAffected
    
     Return retVal
     End Function
    
    Das Problem ist hierbei, wenn ich die Page als "google.de" reingebe, dann bekomme ich einen Fehler.

    Code:
    Procedure or function '`de`' cannot be found in database '`SELECT * FROM pages WHERE Page = google`'.
    
    hier sieht man dann halt das die SQL Klasse den Eingabewert scheinbar falsch interpretiert. Weiß jemand wie ich das lösen kann?

    Gruß


    Edit: Das Statement funktioniert einwandfrei wenn ich es im phpmyadmin ausführe
     
  2. 12. Januar 2012
    AW: [MySQL] Insert mit "." Werten, werden falsch interpretiert

    Vermutlich musst du den "." escapen (gib's das Wort überhaupt im Deutschen? ), also durch "\." (ohne die "") ersetzen. PHPMyAdmin dürfte das automatisch machen. Bin gerade überfragt, ob's dafür in .NET eine Funktion gibt, ansonsten selbst basteln oder mal bei Google schauen. Wird übrigens nicht nur beim "." passieren, dass du eine Fehlermeldung oder ein anderes Ergebnis bekommst, da MySQL noch andere Zeichen besonders behandelt.
     
  3. 12. Januar 2012
    AW: [MySQL] Insert mit "." Werten, werden falsch interpretiert

    Villeicht kenn ich mich ja nicht ganz so aus mit .NET etc. und vllt auch nicht genug, aber bei Oracle ist es zB. so das nen manuell abgesetztes SQL Statement keine StoredProcedure ist.

    Wie kommts das also bei dir das Select Statement als StoredProcedure definiert wird?
    Code:
    selectStatement.CommandType = CommandType.StoredProcedure
    Meine Vermutung ist das du keine SP absetzen willst sondern nen normales SQL Statement, es wird nun im Package "google" nach einer Prozedur mit Namen "de" gesucht, da der Punkt das Package von Prozeduren und Funktionen unterteilt. wie in Java zB.

    System.out.println() etc you know?

    Darum ist die Meldung eigentlich aussagekräfitg genug, er interpretiert den Punkt also genau richtig.



    selectStatement= myConnection.CreateCommand
    selectStatement.CommandText = "SELECT * FROM pages WHERE Page LIKE '" & Page & "'"
    selectStatement.ExecuteNonQuery()

    oder so hab ich herkopiert von google. also nich beachten bitte. es sollte nur ein denkanstoß sein besser zu googlen ;D

    ich hab von .net null plan.aber eine stored procedure ist es garantiert nicht.
     
  4. 13. Januar 2012
    AW: [MySQL] Insert mit "." Werten, werden falsch interpretiert

    Hat funktioniert mit dem CommandType. Musste einfach nur Text sein.

    Vielen lieben Dank!
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.