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