Ankündigung

Einklappen
Keine Ankündigung bisher.

Leeren String statt NULL

Einklappen
X

Leeren String statt NULL

Einklappen
  • Filter
  • Zeit
Alles löschen
neue Beiträge

  • T-Trinker
    antwortet
    Danke für deinen Hinweis, da hast du natürlich völlig recht!
    Ich habe es jetzt auf Prepared Statementes umgestellt. Am Ursprungsproblem hat es allerdings leider nichts geändert (das hatte ich ja insgeheim gehofft ;-) ).

    Code:
    def conn = g_dbConnections["GIS-Daten"];
    stm = conn.prepareStatement("UPDATE person SET address=? WHERE id=12345");
    stm.setString(1, '');
    stm.executeUpdate();
    produziert in besagtem Feld ein NULL statt einem leeren String. :-(

    Einen Kommentar schreiben:


  • MartinW
    antwortet
    Also begegnet ist mri das noch nicht, müsste ich jetzt nachstellen.
    Wo ich aber dringend drauf hinweisen möchte ist, dass es maximal unsicher ist, Variablen direkt in den SQL String zu schreiben. Stattdessen sollte man die Parametrisierung von Prepared Statements nutzen.
    Man kann dazu mit Schleifen arbeiten um das SQL zusammenzubauen und dann die Werte ebenfalls in einer Schleife als Parameter an das Statement übergeben.

    Einen Kommentar schreiben:


  • T-Trinker
    hat ein Thema erstellt Leeren String statt NULL.

    Leeren String statt NULL

    Hallo zusammen,

    ich möchte in einer ProgreSQL-Datenbank einige Felder updaten.

    Dazu nutze ich im Groovy-Script eines Prozesses den folgenden Code:
    Code:
    def conn = g_dbConnections["Datenquelle"];
    g_dbQuery.executeUpdate(conn, "UPDATE ${targetTable} SET ${fieldChanges} WHERE id = '$id}'");
    "fieldChanges" enthält dabei eine Liste von Update-Anweisungen ("feld1 = 'xyz', feld2 = 'abc', feld3 = '', feld4 = 'uvw'").
    Die sonstigen Variablen sind natürlich alle sinnvoll belegt, das Statement wird auch ausgeführt.

    Was mich jetzt überrascht: Wenn ich ein Feld auf einen leeren String setzen möchte (im Beispiel oben "feld3"), so wird dieses trotzdem auf NULL gesetzt.
    Wenn ich das gleiche Statement über ein SQL-Tool ausführe, enthält das Feld (korrekt) einen leeren String.

    Hat jemand eine Idee, woran das liegen könnte?

    Vielen Dank schon mal!
Lädt...
X