Ich habe das Datenbankschema (bisher nur eine Tabelle) und die INSERT-Anweisungen für diese Tabelle in einer Datei geschrieben. Dann habe ich die Datenbank wie folgt erstellt:
$ sqlite3 newdatabase.db
SQLite version 3.4.0
Enter ".help" for instructions
sqlite> .read ./schema.sql
SQL error near line 16: near "s": syntax error
Zeile 16 meiner Datei sieht ungefähr so aus:
INSERT INTO table_name (field1, field2) VALUES (123, 'Hello there\'s');
Das Problem ist das Escape-Zeichen für ein einfaches Anführungszeichen. Ich habe auch versucht, dem einfachen Anführungszeichen doppelt zu entkommen ( \\\'
anstelle von \'
), aber das hat auch nicht funktioniert. Was mache ich falsch?
INSERT INTO table_name (field1, field2) VALUES (?, ?)
und die Werte würden direkt (und ohne Substitutionen) geliefert.Ich glaube, Sie möchten entkommen, indem Sie das einfache Zitat verdoppeln:
quelle
Verwenden Sie zum Ersetzen aller (') in Ihrer Zeichenfolge
Beispiel:
quelle
Nur für den Fall, dass Sie eine Schleife oder einen JSON-String haben, die in die Datenbank eingefügt werden müssen. Versuchen Sie, die Zeichenfolge durch ein einfaches Anführungszeichen zu ersetzen. Hier ist meine Lösung. Beispiel, wenn Sie eine Zeichenfolge haben, die ein einfaches Anführungszeichen enthält.
Das funktioniert bei mir in c # und java
quelle
In C # können Sie Folgendes verwenden, um das einfache Anführungszeichen durch ein doppeltes Anführungszeichen zu ersetzen:
Und die Ausgabe wird sein:
Und wenn Sie direkt mit Sqlite arbeiten; Sie können mit Objekt anstelle von Zeichenfolge arbeiten und spezielle Dinge wie DBNull abfangen:
quelle
In Bash-Skripten stellte ich fest, dass das Umschließen von doppelten Anführungszeichen um den Wert für Werte erforderlich ist, die null sein können oder Zeichen enthalten, die umgangen werden müssen (wie Bindestriche).
In diesem Beispiel kann der Wert von columnA null sein oder Bindestriche enthalten:
quelle