» »

[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!
l'jga
  • spremenil: borchi ()

kopernik ::

Torej, a si že pogledal java.sql.PreparedStatement ?

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'

:)
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
č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.
l'jga

Sergio ::

;)

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.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

java,db,insert problem

Oddelek: Programiranje
101490 (1214) Spura
»

Zaščita pred SQL injection - user?

Oddelek: Izdelava spletišč
231974 (1402) techfreak :)
»

Java - uvoz XML in izvoz v MySQL pomoč

Oddelek: Programiranje
372913 (2250) igor0203
»

java, zajem podatkov iz DB

Oddelek: Programiranje
101246 (978) l0g1t3ch
»

[Java] Evidenca delovnega časa - Java v navezi z Accessom

Oddelek: Programiranje
393297 (2517) c0dehunter

Več podobnih tem