PreparedStatement 的 setDate 方法設定 java.sql.Date 日期
實作通過JDBC向oracle資料庫中插入時間型別資料,
主要通過 PrepareStatement 的 setDate 方法,
創建v_emp表的代碼如下(示例):
//1.創建表
@Test
public void create() {
Connection conn=ConnectionFactory.getConnection();
Statement st=null;
try {
st=conn.createStatement();
String sql="create table v_emp(id number primary key,"
+"name varchar2(20) not null,"
+ "passwd varchar2(20),"
+"salary number(7,2),"
+"start_date date)";
int count = st.executeUpdate(sql);
System.out.println(count);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
DBUtil.close(st,conn);
}
}
第一種:通過oracle中的to_date()方法來實作
代碼如下(示例):
/*
* 【1】使用Oracle中的to_date()方法
*/
//2:插入1000條記錄
@Test
public void insert() {
Connection conn=ConnectionFactory.getConnection();
PreparedStatement pst=null;
try {
String sql="insert into v_emp values(?,?,?,?,to_date(?,'yyyy-mm-dd'))";
pst=conn.prepareStatement(sql);
//Date date=new Date(2020,11,18);
for(int i=0;i<1000;i++) {
pst.setInt(1,i);
pst.setString(2,"user");
pst.setString(3,"123456");
pst.setDouble(4,1500.50);
pst.setString(5, "2020-11-18");
//把sql陳述句添加到批處理中
pst.addBatch();
//當批處理中的資料達200條后,處理一次批處理中所有代碼(相當于每次處理200條)
if(i%200==0)
pst.executeBatch();
}
//如果資料不夠200條時,處理剩余的這些資料
pst.executeBatch();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} finally{
DBUtil.close(pst,conn);
}
}
第二種:通過呼叫 java.sql.Date 的三參構造器傳進日期資料來創建一個Date型別物件,然后將這個物件作為 PreparedStatement 的 setDate()方法的引數來實作,
代碼如下(示例):
/*
* 【2】插入日期時,使用java.sql.Date的三參構造器:Date(int,int,int)
*/
//2:插入1000條記錄
@Test
public void insert1() {
Connection conn=ConnectionFactory.getConnection();
PreparedStatement pst=null;
try {
String sql="insert into v_emp values(?,?,?,?,?)";
pst=conn.prepareStatement(sql);
Date date=new Date(2020,11,18);
for(int i=0;i<1000;i++) {
pst.setInt(1,i);
pst.setString(2,"user");
pst.setString(3,"123456");
pst.setDouble(4,1500.50);
pst.setDate(5,date);
//把sql陳述句添加到批處理中
pst.addBatch();
//當批處理中的資料達200條后,處理一次批處理中所有代碼(相當于每次處理200條)
if(i%200==0)
pst.executeBatch();
}
//如果資料不夠200條時,處理剩余的這些資料
pst.executeBatch();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} finally{
DBUtil.close(pst,conn);
}
}
第三種:主要通過呼叫 java.sql.Date 的一參構造器傳進日期資料來創建一個Date型別物件,然后將這個物件作為 PreparedStatement 的 setDate()方法的引數來實作,
/*
* 【3】插入資料時,使用java.sql.Date的一參構造器:Date(long)
*/
//2:插入1000條記錄
@Test
public void insert2() {
Connection conn=ConnectionFactory.getConnection();
PreparedStatement pst=null;
try {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd");
java.util.Date date=sdf.parse("2020-11-18");
long time=date.getTime();
String sql="insert into v_emp values(?,?,?,?,?)";
pst=conn.prepareStatement(sql);
for(int i=0;i<1000;i++) {
pst.setInt(1,i);
pst.setString(2,"user");
pst.setString(3,"123456");
pst.setDouble(4,1500.50);
pst.setDate(5, new java.sql.Date(time));
//把sql陳述句添加到批處理中
pst.addBatch();
//當批處理中的資料達200條后,處理一次批處理中所有代碼(相當于每次處理200條)
if(i%200==0)
pst.executeBatch();
}
//如果資料不足200條時,處理剩余的這些資料
pst.executeBatch();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
DBUtil.close(pst,conn);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/225424.html
標籤:其他
上一篇:C#DateTime時間操作
