„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie verkette ich Strings effektiv mit Werten in SQL-Abfragen mithilfe von Go?

Wie verkette ich Strings effektiv mit Werten in SQL-Abfragen mithilfe von Go?

Veröffentlicht am 07.11.2024
Durchsuche:305

How to Effectively Concatenate Strings with Values in SQL Queries Using Go?

SQL-Abfragen effektiv in Go erstellen

Das Verketten von Zeichenfolgen mit Werten in Text-SQL-Abfragen kann in Go etwas schwierig sein. Im Gegensatz zu Python verhält sich die String-Formatierungssyntax von Go anders, was zu häufigen Fehlern wie dem hier aufgetretenen führt.

Tupel-Syntaxfehler

Der ursprüngliche Codeausschnitt versucht, einen Python zu verwenden Tupel im Stil, das in Go nicht unterstützt wird. Dies führt zu einem Syntaxfehler:

query := fmt.Sprintf(`SELECT column_name FROM table_name
        WHERE column1_name = %d AND column2_name = %d`,
        (val1, val2))

Nicht übereinstimmende Typen

Der Versuch, die Tupelelemente als Zeichenfolgen umzuwandeln, schlägt ebenfalls aufgrund einer Typinkongruenz fehl:

query := fmt.Sprintf(`SELECT column_name FROM table_name
        WHERE column1_name = %d AND column2_name = %d`,
        val1, val2)

Konflikte Operatoren vermeiden

Das Umwandeln der Parameter in Zeichenfolgen und deren Verkettung mit dem Operator %s würde funktionieren, wird aber nicht empfohlen. Dieser Ansatz birgt das Risiko einer Operatorinkongruenz:

query := fmt.Sprintf(`SELECT column_name FROM table_name
        WHERE column1_name = %s AND column2_name = %s`,
        strconv.Itoa(val1), val2)

Die Go-Lösung

Um eine Text-SQL-Abfrage mit Werteverkettung in Go korrekt zu schreiben, verwenden Sie fmt.Sprintf wie folgt:

query := fmt.Sprintf(`SELECT column_name FROM table_name
        WHERE column1_name = %d AND column2_name = %s`,
        val1, val2)

Diese Syntax vermeidet Injektionsschwachstellen und stellt eine ordnungsgemäße Typkonvertierung sicher.

Injektionsverhinderung

Um SQL-Injection-Angriffe zu verhindern, verwenden Sie immer vorbereitet Anweisungen oder stellen Sie Escape-Zeichen für vom Benutzer bereitgestellte Eingaben bereit.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3