Date sql query, java
我正在尝试在SQL中执行查询,其中我需要"今天"的日期,月份和年份。
1 2 | INSERT INTO Facture (Date_Achat,Remise, Acompte, Mode_De_Paiement, N°Client) VALUES (Date(Now())," +s6+","+ s7 +" ,'"+s8+"' ,"+s1+");" |
但是
1 2 3 4 5 6 7 8 9 10 11 12 13 | Date actuelle = new Date(); //String dat = dateFormat.format(actuelle); SimpleDateFormat formatter= new SimpleDateFormat("yyyy-mm-dd"); Calendar today = Calendar.getInstance(); today.set(Calendar.DAY_OF_MONTH,Calendar.MONTH,Calendar.YEAR); try { actuelle = formatter.parse(today.toString()); } catch (ParseException ex) { Logger.getLogger(CréationFacture.class.getName()).log(Level.SEVERE, null, ex); } |
谢谢!
除非要使代码易于受到SQL注入攻击的攻击,否则黑客可以窃取您的数据并删除表,请不要使用字符串连接将字符串值插入SQL语句中。
使用
如果您使用的是Java 8,则使用
因此,您的代码应类似于以下内容,使用有意义的变量名而不是诸如
当然,您应该针对变量的实际数据类型调整
1 2 3 4 5 6 7 8 9 10 11 | String sql ="INSERT INTO Facture" + " (Date_Achat, Remise, Acompte, Mode_De_Paiement, N°Client)" + " VALUES (?, ?, ?, ?, ?)"; try (PreparedStatement stmt = conn.prepareStatement(sql)) { stmt.setDate (1, java.sql.Date.valueOf(LocalDate.now())); stmt.setInt (2, remise); stmt.setInt (3, acompte); stmt.setString(4, modeDePaiement); stmt.setInt (5, noClient); stmt.executeUpdate(); } |
如果不能使用
1 2 3 4 5 6 7 |
然后在第一个setter调用中使用它:
1 | stmt.setDate(1, today); |