Problem beim verketten von GUID und Strings in einem Query

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Trigoor.

    Problem beim verketten von GUID und Strings in einem Query

    Hallo liebes Forum,

    vielleicht kann mir ja jemand helfen.
    Erst einmal der Quellcode:

    VB.NET-Quellcode

    1. dataContext.ExecuteCommand("UPDATE Kontoauszug SET waehrung = " & row.Währung & _
    2. " WHERE idKontoauszug = " & element.idKontoauszug)


    Das Problem ist aber das IntelliSense meldet: " Der &-Operator ist für die Typen "String" und "System.Guid" nicht definiert."
    Habe es auch schon mit element.idKontoauszug.toString probiert.
    Aber dann gibt es leider folgende Exception: Operandentypkollision: uniqueidentifier ist inkompatibel mit numeric

    Frage mich wo da was inkompatibel ist. Die Datenfelder haben das richtge Format. Und warum numeric? Wenn dann höchtens String, oder? ?(

    Hat jemand vielleicht einen Ratschlag auf Lager?

    Viele Grüße
    Trigoor

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Trigoor“ ()

    singu schrieb:

    Welche Typen haben die Eigenschaften?

    Meinst Du die Eigenschaften der Typen in der DB? Also welche Art von Datentyp die ID ist? Sie ist vom Datentyp "uniqueidentifier"..also eine GUID.

    picoflop schrieb:

    Ja.
    Verwende DBParameter anstatt diesem unsäglichen String-Zusammengestückel ...

    Nun ja, bin das aus anderen Programmiersprachen halt so gewohnt. Auch wenn es eventuell manche Nachteile mit sich bringen mag.

    picoflop schrieb:


    Oje, das Thema sieht recht komplex aus. Da braucht man bestimmt mehrere Tage bis man sich da hineingearbeitet hat. Denn leider habe ich von ADO.NET absolut keine Ahnung.

    Ich habe ein Update auch direkt über Linq to SQL probiert, aber hatte damit große Probleme. Aber das ist ein anderer Thread. :huh:
    Zum Glück habe ich entdeckt das eine ExecuteCommand-Methode des Objekts vom Typ DataContext gibt. So muss ich LEIDER wohl diesen Umweg gehen.

    Trotzdem Danke für Eure Ratschläge!

    Trigoor schrieb:

    Nun ja, bin das aus anderen Programmiersprachen halt so gewohnt.

    PHP?
    Ja die *** PHP'ler verwenden den Kram auch gerne, obwohl doch mysqli schon lange prepared statements mit parametern bietet. Rate mal welche Webseiten ständig per SQL-Injection gehackt werden! Genau! Die, wo der Programmierer sich auch nicht die "Mühe" machen wollte, das ganze per Parameter zu machen!

    SO einfach ist das:
    [Access] Datenbank Aktualiesieren

    picoflop schrieb:

    PHP?

    Habe eher wenig Erfahrungen mit PHP. Wir haben damals in der Ausbildung viel mit Java gemacht. Hibernate wäre cool gewesen. Aber nun ja, ich glaube, dass unser Dozent auch recht wenig Ahnung davon hatte.

    Also mit "prepared statements" habe ich leider keine Erfahrungen. Ist das einfach zu erlernen? Habe mal gesehen, dass man es sogar über den Designer machen kann.

    picoflop schrieb:

    SQL-Injection gehackt

    Aha, wieder etwas schlauer geworden. :)

    picoflop schrieb:

    SO einfach ist das:
    [Access] Datenbank Aktualiesieren

    Werde ich mir mal anschauen. Sieht auf den ersten Blick recht einfach aus und auch nicht sooo kryptisch. Ich hoffe doch, dass ich es mit dem OleDbParameter und dem Rest hinkriege, denn sonst weiss ich echt nicht weiter.

    Wobei mir Linq irgendwie am besten gefällt. Zumindestens die SELECTS und die INSERTS sind echt einfach zu erlernen. Nur bei dem blöden UPDATE hatte ich irgendwie Probleme.

    Danke für den Link!

    Trigoor schrieb:

    Wir haben damals in der Ausbildung viel mit Java gemacht.

    Auch Java kennt sowas ... ;)
    owasp.org/index.php/Preventing_SQL_Injection_in_Java
    owasp.org/index.php/Preventing…ava#Parameterized_Queries

    Wenn man mit DBs arbeitet, sollte man (wenn man direkte SQL statements verwendet natürlich) IMMER mit parametrisierten Queries arbeiten! EGAL in welcher Sprache. Es macht (mittelfristig) das Leben einfacher UND sicherer!

    picoflop schrieb:

    Wenn man mit DBs arbeitet, sollte man (wenn man direkte SQL statements verwendet natürlich) IMMER mit parametrisierten Queries arbeiten! EGAL in welcher Sprache. Es macht (mittelfristig) das Leben einfacher UND sicherer!

    Ja, da hast Du wohl Recht. Mache nebenbei noch ein bisschen Java. Allerdings JDK und nicht JSEE. Wenn ich mal tiefer in das Thema Java und DBs einsteigen muss, werde ich mal auf Deine Links zurückgreifen. :)

    Achso, habe das Problem mittlerweile gelöst. Nicht das mit dem GUID und dem String.
    Habe doch tatsächlich endlich ein Update mit Linq to SQL hingekriegt.

    Siehe hier:
    [VB 2008] LINQ2SQL Update klappt nicht Fehler: "Eine Entität, deren Schlüssel bereits verwendet wird, kann nicht hinzugefügt werden"

    Also, schönen Abend noch. Mache jetzt Feierabend. Habe heute Abend noch was vor! :)

    Greetz
    Trigoor