如何修复此代码?在处理日期时,应该使用什么来代替整数%d?
public static void entryAdd()
{
Scanner scan= new Scanner(System.in);
System.out.print(" Student Number :");
int newNumber= scan.nextInt();
System.out.print(" Entry no :");
int entryNumber=scan.nextInt();
System.out.print(" Borrow Date :");
int borrowDate=scan.nextInt();
System.out.print("Return Date :");
int returnDate=scan.nextInt();
try{
Statement stmt=con.createStatement();
String query=String.format("insert into entry values( %d, %d, %d, %d, %d)", newNumber,entryNumber,borrowDate, returnDate);
int add = stmt.executeUpdate(query);
System.out.println("Entry Added");
}catch(Exception e){ System.out.println(e);}
}
2条答案
按热度按时间qltillow1#
可以用字符串代替日期,在mysql中可以插入字符串date。mysql将把它改为real date。
9w11ddsr2#
你不应该使用
String.format
构造查询字符串。当与字符串值(或其他对象)一起使用时,它会使您的代码易受sql注入的影响或难以诊断语法错误。正确的解决方案是:
这假设您正在插入
DATE
列,并且您的驱动程序符合JDBC4.2。我还显式地指定要插入的列(我根据变量名猜出了列名)。这样可以防止在重新排序的列中插入数据或在添加了(可为空的)列的表更改时出现问题。