Mate pravdu, priznavam, PreparedStatement je mnohem lepsi...
  Ale k plaintextovemu sestavovani SQL - k tomu vas muze donutit framework,
který po vás chce buď celý SQL dotaz nebo třeba jen část WHERE klauzule, a
?-čkové parametry tam v případě datumů nejdou použít. Já tu WHERE klauzuli
prostě někdy ručně sestavovat musím (na to mám formátovací specialitky
datumů různých databází vytažené ven a když píšu kód, tak se jimi
nezabývám).

 Jinak teď jsem si všimnul - možná by to fungovalo lépe, kdyby místo
druhého WHERE bylo AND... :-)

JP

[EMAIL PROTECTED] napsal dne 21.12.2006 17:46:16:

> Zdravim,
>
> Jedine spravne reseni je pouzit PreparedStatement:
>
>  Date b = new java.sql.Timestamp(System.currentTimeMillis());
>  String sql = "SELECT * FROM tasks WHERE id_user=? WHERE
> datum_splneni <= ? ORDER BY datum_vlozeni ASC";
>  PreparedStatement stmt = dbConn.prepareStatement(sql);
>  stmt.setString(1, id_user);
>  stmt.setDate(2, b);
>
> Nejenom ze to bude fungovat na MySQL, ale i na vsech ostatnich
databazich.
> A jako bonus nebude mit nahodny navstevnik otevreny pristup do
> databaze! (SQL Injection)
>
> Neodpustim si poznamku:
> Plaintextove sestavovani SQL (navic bez escapovani) je zcela bezna
> zacatecnicka chyba. Kazdy z nas tim prosel.
> Ale ze se na tento dotaz sesly hned tri odpovedi bez jedine zminky o
> PreparedStatement, to je docela... prekvapive.
>
>
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] Behalf Of Michal Davídek
> > Sent: Thursday, December 21, 2006 5:10 PM
> > To: [email protected]
> > Subject: OT: mysql a java
> >
> >
> > Zdravím, mám začátečnický dotaz.
> >
> >     mám v mysql tabulku se sloupcem datum, formát nastaven na "DATE".
> > (formátuje to takhle: 2006-12-21)
> >
> >     potřebuji z tabulky vybrat záznamy, které mají DATE menší
> > než třeba
> > dnešní datum, ale nedaří se mi to.
> >
> >     prikazy:
> >     Date b =new Timestamp(new Date().getTime());
> >     String sql = "SELECT * FROM tasks WHERE id_user='" +id_user+ "'
> > WHERE datum_splneni <= "+b+" ORDER BY datum_vlozeni ASC";
> >     vim, ze to bude tim nastaveni Date b; ale nevim, jak z toho mam
> > vytáhnout údaj, který by mysql akceptoval, takhle to pořád
> > hází nějaké
> > errors.
> >
> >     poradíte? díky. M.
> >
>
> --
> Kamil "podlesh" Podlesak

Odpovedet emailem