本次是使用 PreparedStatement 进行多组类似数据的插入,使用过程中preStmt.setDate()的方法,其中,setDate的第二个参数为 java.sql.Date;的类型而不是java.util.Date;的类型。
所以在获取当前时间时,会出现问题。其中,setDate的第二个传入的参数是string类型,所以想到,使用之前的方法,把日期转换成string类型,再传入应该可以解决问题。
下面附上代码
package com.duan.testsql;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Date;
import cn.itcast.jdbc.example.utils.JDBCUtils;
public class Example11 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection conn = null;
PreparedStatement preStmt = null;
try
{
conn = JDBCUtils.getConnection();
String sql = "INSERT INTO users(name,password,email,birthday)"+"VALUES(?,?,?,?)";
preStmt = conn.prepareStatement(sql);
NowDate nd = new NowDate();
String date =nd.getNowDateToString();
for(int i = 0; i < 5 ; i++)
{
preStmt.setString(1,"name"+i);
preStmt.setString(2, "password"+i);
preStmt.setString(3, "email"+i+"@itcast.cn");
preStmt.setDate(4, Date.valueOf(date));
preStmt.addBatch();
}
preStmt.executeBatch();
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
finally
{
JDBCUtils.release(null, preStmt,conn);
}
}
}
package com.duan.testsql;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
public class NowDate {
public Date getNowDate() {
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
String dateString = formatter.format(currentTime);
ParsePosition pos = new ParsePosition(0);
Date currentTime_2 = formatter.parse(dateString, pos);
return currentTime_2;
}
public String getNowDateToString() {
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String dateString = formatter.format(currentTime);
return dateString;
}
}
问题得到很好解决,可以方便的把当前时间插入到数据库中。