Zajisté. To, že je něco nesystémové ještě přece neznamená, že se to nesmí použít ani z principu ;-)
Ale je fakt, že PreparedStatement je lepší řešení. Taky je fakt, že nebude fungovat všude, protože SQL dialekty se mohou lišit i jinde než v formátu parametru... ale to jsme trochu odbočili. Petr -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Jan Pechanec Sent: Thursday, December 21, 2006 7:05 PM To: Java Subject: RE: mysql a java 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
