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 | 1665 (1389) | Spura |
| » | Zaščita pred SQL injection - user?Oddelek: Izdelava spletišč | 2125 (1553) | techfreak :) |
| » | Java - uvoz XML in izvoz v MySQL pomočOddelek: Programiranje | 3183 (2520) | igor0203 |
| » | java, zajem podatkov iz DBOddelek: Programiranje | 1335 (1067) | l0g1t3ch |
| » | [Java] Evidenca delovnega časa - Java v navezi z AccessomOddelek: Programiranje | 3440 (2660) | c0dehunter |