Saya menulis skema database (hanya satu tabel sejauh ini), dan pernyataan INSERT untuk tabel itu dalam satu file. Kemudian saya membuat database sebagai berikut:
$ 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
Baris 16 file saya terlihat seperti ini:
INSERT INTO table_name (field1, field2) VALUES (123, 'Hello there\'s');
Masalahnya adalah karakter melarikan diri untuk satu kutipan. Saya juga mencoba dua kali lolos dari kutipan tunggal (menggunakan \\\'
bukan \'
), tetapi itu tidak berhasil. Apa yang saya lakukan salah?
INSERT INTO table_name (field1, field2) VALUES (?, ?)
dan nilai-nilai akan diberikan secara langsung (dan tanpa substitusi).Saya yakin Anda ingin melarikan diri dengan menggandakan kutipan tunggal:
sumber
untuk mengganti semua (') di string Anda, gunakan
contoh:
sumber
Untuk jaga-jaga jika Anda memiliki loop atau string json yang perlu dimasukkan dalam database. Cobalah untuk mengganti string dengan kutipan tunggal. ini solusinya. contoh jika Anda memiliki string yang berisi satu kutipan.
ini bekerja untuk saya di c # dan java
sumber
Dalam C # Anda dapat menggunakan yang berikut untuk mengganti penawaran tunggal dengan penawaran ganda:
Dan hasilnya adalah:
Dan, jika Anda bekerja dengan Sqlite secara langsung; Anda dapat bekerja dengan objek bukannya string dan menangkap hal-hal khusus seperti DBNull:
sumber
Dalam skrip bash, saya menemukan bahwa melarikan diri dari tanda kutip ganda di sekitar nilai diperlukan untuk nilai yang bisa berupa karakter nol atau berisi yang memerlukan pelarian (seperti tanda hubung).
Dalam contoh ini, nilai kolomA bisa menjadi nol atau mengandung tanda hubung .:
sumber