SQLite i apostrof w insert

0

Hej,
w pętli przelatuj listę obiektów, wyciągam odpowiednie dane i dodaje je do wielkiego string-a, który będzie INSERTem do DB. Problem jest taki że nie które z pól w obiektach mogą zawierać apostrof w nazwie, wtedy wykonanie polecenia się wysypuje.
Wydawało mi się że .toParam() załatwi sprawę, ale jednak nie - zapytanie które tworzy jest niepoprawne.

  var query = this.queryGenerator
                .insert().into("People")
                .set("city", "cit1")
                .set("surname", "sur1")
                .set("name", "C'ode")
                .toString();

wywala że jest incorrect syntax near "ode".
Jak zrobię "toParam()", wtedy wyrzuca że "syntax object "near "[object Object]": syntax error"}"

0

Spróbuj tak:

  var query = this.queryGenerator
                .insert().into('People')
                .set('city', 'cit1')
                .set('surname', 'sur1')
                .set('name', 'C\'ode')
                .toString();
 

Tyle, że to bardziej chyba problem związany z javascript niż SQL. :P

0

Nie jest problem kiedy mam apostrof w jednej linijce. Dane sa ladowane dynamicznie, wiec ja nie wiem gdzie jest apostrof a gdzie go nie ma :(
To tylko przyklad jak moze wygladac takie zapytanie

0

To podmieniaj stringi w locie i wstawiaj za każdy " ' " znak " ' ".

0

Kurde no właśnie o to chodzi że nie chce tego robić!! Wiem że się da zrobić to na poziomie już SQL-a, tylko nie wiem jak!!!!

1

Problem polega na tym, że składasz to w "wielkiego string-a" jak noob od php... Aż prosisz się o SQLInjection, no ale nic...
Poczytaj o sparametryzowanych zapytaniach (chyba nie ma języka, który nie potrafi obsługiwać parametrów w zapytaniach SQL) i zacznij ich używać - tj. zacznij używać parametrów w zapytaniach SQL.
I jeszcze jedno - Twój problem nie ma nic wspólnego z czystym SQL, nic a nic.

Oczywiście, że da się to zapisać w w czystym SQL - to o czym piszesz to jest tzw. single quote i aby to zapisać w czystym SQL trzeba dodać drugi single quote, czyli tak:

  var query = this.queryGenerator
                .insert().into("People")
                .set("city", "cit1")
                .set("surname", "sur1")
                .set("name", "C''ode")
                .toString();

Ale to lipa straszna...

1 użytkowników online, w tym zalogowanych: 0, gości: 1