Forum » Programiranje » [Java][MySQL] insert string, ki vsebuje " ' "
[Java][MySQL] insert string, ki vsebuje " ' "
borchi ::
delam konverter iz dbf tabel v sql in obratno.
problem: če mam v poljih tipa character v dbf tabeli string, ki ima v sebi tut single quote (') me seveda npr.:
stmt.executeUpdate("INSERT INTO table VALUES(" + string1 + "," + string2 + ")");
pobruha!
sedaj pa rabim manj "partizansko" varjanto od sedanje, kjer delam naslednje:
- glede na tipe polj v dbf tabeli ugotovim kolk single quote-ov naj bi blo v statement-u
- pogledam kolk jih je dejansko
- če jih je več, grem gledat v vse stringe, da ugotovim kater ma v seb '
- escape-am ' znotraj tega stringa tako da vrinem \\ pred '
sicer sem našu en converter ( http://www.anubisnet.de/products/dbf, ki je super duper hiter in pravilno escape-a single quote, sam se mu pa sladko jebe za mysql rezervirane besede, pri praznih date poljih flikne notr 'NULL namest 'NULL', dbf tipe logical spremeni v numeric (men bi bol pasalo set),...
PLEH!
problem: če mam v poljih tipa character v dbf tabeli string, ki ima v sebi tut single quote (') me seveda npr.:
stmt.executeUpdate("INSERT INTO table VALUES(" + string1 + "," + string2 + ")");
pobruha!
sedaj pa rabim manj "partizansko" varjanto od sedanje, kjer delam naslednje:
- glede na tipe polj v dbf tabeli ugotovim kolk single quote-ov naj bi blo v statement-u
- pogledam kolk jih je dejansko
- če jih je več, grem gledat v vse stringe, da ugotovim kater ma v seb '
- escape-am ' znotraj tega stringa tako da vrinem \\ pred '
sicer sem našu en converter ( http://www.anubisnet.de/products/dbf, ki je super duper hiter in pravilno escape-a single quote, sam se mu pa sladko jebe za mysql rezervirane besede, pri praznih date poljih flikne notr 'NULL namest 'NULL', dbf tipe logical spremeni v numeric (men bi bol pasalo set),...
PLEH!
l'jga
- spremenil: borchi ()
kopernik ::
Torej, a si že pogledal java.sql.PreparedStatement ?
Tvoj primer se prevede takole :
To je kar se tiče escape-anja vrednosti v sql stavkih, saj odgovornost za pravilno escape-anje preložiš na jdbc library, ki ga napiše database provider(problem je že v tem, ker mySQL npr. uprablja za escape character backslash, druge baze pa nekaj drugega). Za dbf konverter pa ti ne morem pomagati, ker se s tem še nisem ukvarjal.
Tvoj primer se prevede takole :
PreparedStatement pstmt = con.prepareStatement("INSERT INTO table VALUES(?, ?)"); pstmt.setString(1, "string ki ima quote ' blab bla"); pstmt.setString(2, "se en string ki ima quote ' blab bla"); pstmt.executeUpdate();
To je kar se tiče escape-anja vrednosti v sql stavkih, saj odgovornost za pravilno escape-anje preložiš na jdbc library, ki ga napiše database provider(problem je že v tem, ker mySQL npr. uprablja za escape character backslash, druge baze pa nekaj drugega). Za dbf konverter pa ti ne morem pomagati, ker se s tem še nisem ukvarjal.
Zgodovina sprememb…
- spremenil: kopernik ()
Sergio ::
uporabljaj prepared statemente in setiraj parametre, znotraj SQLja jih pa oznaci z vpasajckom.
Google for 'java preparedstatement'
:)
Google for 'java preparedstatement'
:)
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.
če usoda ustavi mu korak,
on se ji zoperstavi.
borchi ::
i hate myself and i want to die...
... ker nisem tega vprašal preden sem začel pesnit brez prepared statements.
... ker nisem tega vprašal preden sem začel pesnit brez prepared statements.
l'jga
Sergio ::
;)
Sej ves. Bolje pozno kot nikoli;DROP DATABASE lala;
:)
Sej ves. Bolje pozno kot nikoli;DROP DATABASE lala;
:)
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.
če usoda ustavi mu korak,
on se ji zoperstavi.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | java,db,insert problemOddelek: Programiranje | 1471 (1195) | Spura |
» | Zaščita pred SQL injection - user?Oddelek: Izdelava spletišč | 1949 (1377) | techfreak :) |
» | Java - uvoz XML in izvoz v MySQL pomočOddelek: Programiranje | 2864 (2201) | igor0203 |
» | java, zajem podatkov iz DBOddelek: Programiranje | 1228 (960) | l0g1t3ch |
» | [Java] Evidenca delovnega časa - Java v navezi z AccessomOddelek: Programiranje | 3273 (2493) | c0dehunter |