先看這一段代碼
public static void main(String[] args) {
//查詢?nèi)肼殨r間在XXX日期之后,并且不從事XXX職位工作的員工姓名、入職時間、職位。
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mysqldb";
String username = "root";
String password = "root";
Connection con=DriverManager.getConnection(url,username,password);
Scanner sc =new Scanner(System.in);
System.out.println("請輸入時限");
String limitdate = sc.nextLine();
System.out.println("請輸入不從事的工作");
String nojob = sc.nextLine();
String sql ="select ename,hiredate,job from emp where hiredate>? and job != ?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, limitdate);
ps.setString(2, nojob);
ResultSet rs =ps.executeQuery();
while(rs.next()) {
String ename = rs.getString("ename");
String hiredate = rs.getString("hiredate");
String job = rs.getString("job");
System.out.println("員工姓名:"+ename+",入職日期:"+hiredate+",職位:"+job);
}
rs.close();
ps.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
摘取討論片段:
String sql="select ename,hiredate,job from emp where hiredate>? and job<>?";
PreparedStatement ps=con.prepareStatement(sql);
Date dd=Date.valueOf(hiredate);
// ps.setString(1, hiredate);
ps.setDate(1, dd);
ps.setString(2, job);
1.MySQL可以把表示日期的字符串轉(zhuǎn)換成真正的日期
2.如果是Oracle,沒法自動把String轉(zhuǎn)換成Date
3.ps.setDate方法接收日期參數(shù)是java.sql.Date,不是java.util.Date
4.使用java.sql.Date的靜態(tài)方法valueOf把表示日期的字符轉(zhuǎn)換為真正日期

Oracle對于Date的用法