1、工具類
package com.DB;
import java.sql.*;
public class JDBCUTILS {
private static final String DRIVER = "oracle.jdbc.OracleDriver";
private static String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
private static String USER = "wbd";
private static String PASSWORD = "wbdpsd";
static {
try {
Class.forName(DRIVER);
}catch(Exception e){
e.printStackTrace();
}
}
public static Connection getConnection(){
try {
Connection connection = DriverManager.getConnection(URL, USER, PASSWORD);
return connection;
}catch(Exception ex){
ex.printStackTrace();
}
return null;
}
public static void close(ResultSet resultSet, Statement statement, Connection connection){
try
{
if (resultSet != null && !resultSet.isClosed())
resultSet.close();
}
catch(SQLException ex)
{
ex.printStackTrace();
}
finally
{
try
{
if (statement != null && !statement.isClosed())
statement.close();
}
catch (SQLException ex)
{
ex.printStackTrace();
}
finally
{
try
{
if (connection != null && !connection.isClosed())
connection.close();
}
catch(SQLException ex)
{
ex.printStackTrace();;
}
}
}
}
public static void close(Statement statement, Connection connection){
close(null,statement,connection);
}
}
2、通用類
package com.DB;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.sql.*;
import java.util.*;
import static com.DB.JDBCUTILS.close;
public class CommonDao extends JDBCUTILS {
public static int executeUpdate(String sql,Object ...params){
Connection conn =null;
PreparedStatement preparedStatement =null;
int i=0;
try {
conn = getConnection();
preparedStatement = conn.prepareStatement(sql);
if(params!=null && params.length>0){
for(int j=0;j<params.length;j++){
preparedStatement.setObject(j+1,params[j]);
}
}
i = preparedStatement.executeUpdate();
}
catch(SQLException e){
e.printStackTrace();
}
finally {
close(preparedStatement,conn);
}
return i;
}
public static <T> List<T> queryBeenList(String sql,Class<T>classz ,Object ...paramas){
Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
List<T>lst =new ArrayList<>();
T tmp =null;
try{
connection = getConnection();
preparedStatement = connection.prepareStatement(sql);
if(paramas!=null&¶mas.length>0){
for(int i=0;i<paramas.length;i++){
preparedStatement.setObject(i+1,paramas[i]);
}
}
resultSet = preparedStatement.executeQuery();
Field[]fields=classz.getDeclaredFields();
ResultSetMetaData metaData = resultSet.getMetaData();
int columnCount = metaData.getColumnCount();
String []columnNames =new String[columnCount];
for(int i=0;i<columnCount;i++){
columnNames[i] = metaData.getColumnName(i+1);
}
while(resultSet.next()){
tmp = classz.newInstance();
for(Field f:fields){
String name = f.getName();
Class<?>type =f.getType();
String smn = "set"+name.substring(0,1).toUpperCase()+name.substring(1);
Method sm = classz.getMethod(smn, f.getType());
for(String columnName :columnNames){
if(columnName.equalsIgnoreCase(name) ) {
Object value = resultSet.getObject(columnName);
if(value==null)
continue;
if(value instanceof BigDecimal && type ==int.class){
value = ((BigDecimal)value).intValue();
}
if(value instanceof BigDecimal && type ==double.class){
value = ((BigDecimal)value).doubleValue();
}
sm.invoke(tmp,value);
}
}
}
lst.add(tmp);
}
}
catch(SQLException e){
e.printStackTrace();
}
catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} finally {
close(resultSet,preparedStatement,connection);
}
return lst;
}
public static <T> T queryBeen(String sql,Class<T>classz,Object ...params){
List<T>lst= queryBeenList(sql,classz,params);
if(lst.size()>0){
return lst.get(0);
}
return null;
}
public static int queryBeenLength(String sql){
Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
int num = 0;
try{
connection = getConnection();
preparedStatement = connection.prepareStatement(sql);
resultSet = preparedStatement.executeQuery();
if(resultSet.next()){
num = resultSet.getInt(1);
}
}
catch(SQLException e){
e.printStackTrace();
}finally {
close(resultSet,preparedStatement,connection);
}
return num;
}
}
3、圖書記錄類
package com.DB;
import java.util.Date;
public class RB {
private String uno;
private String bno;
private String rbDate;
public String getUno() {
return uno;
}
public void setUno(String uno) {
this.uno = uno;
}
public String getBno() {
return bno;
}
public void setBno(String bno) {
this.bno = bno;
}
public String getRbDate() {
return rbDate;
}
public void setRbDate(String rbDate) {
this.rbDate = rbDate;
}
public String toString(){
return uno+" borrowed "+bno+" at "+rbDate;
}
}
4、最主要的調用
public static void main(String []args){
try {
String inputString = "2020-06-22";
String uno ="123";
String bno ="0010";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date1 = format.parse(inputString);
System.out.println(date1);
java.sql.Date date2 = new java.sql.Date(date1.getTime());
System.out.println(date2);
String sql="insert into rb values(?,?,?)";
Connection conn =null;
PreparedStatement preparedStatement =null;
try {
conn = getConnection();
preparedStatement = conn.prepareStatement(sql);
preparedStatement.setString(1,uno);
preparedStatement.setString(2,bno);
preparedStatement.setDate(3,date2);
System.out.println(preparedStatement.execute());
}
catch(SQLException e){
e.printStackTrace();
} finally {
close(preparedStatement,conn);
}
} catch (ParseException e) {
e.printStackTrace();
}
}