Probabilmente uno dei caratteri contenuti nella stringa, magari nell'hash, rappresenta un separatore e corrompe la validità dello statement SQL.

Come è stato più volte suggerito e detto, anche in altri frangenti, è sempre bene utilizzare query parametriche invece di accodare direttamente i valori nello statement SQL convertendoli tutti in stringa, inclusi i valori numerici e le informazioni data/ora.

Si tratta della soluzione più sicura (evita "sql injection" e altri tentativi di intrusione) e senz'altro meno "error prone", effettuando in automatico le conversioni dovute senza rischi di errori sul formato.

Ciao!