一、JDBC
1.1、BaseDao
操作数据库的类只需要继承Basedao传入sql和参数就可以完成,数据库操作
package com.pb.basedao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 数据连接基本类
*
*/
public class BaseDao{
//建立连接
protected Connection conn=null;
//操作SQL的对象
protected PreparedStatement ps=null;
//结果集
ResultSet rs=null;
/*
* 获取连接
*/
public Connection getConnection(){
String url="jdbc:oracle:thin:@localhost:1521:orcl";
String username="scott";
String password="tiger";
try {
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//建立连接
conn=DriverManager.getConnection(url,username,password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
//返回连接
return conn;
}
/*
* 查询
* sql--SQL语句
* params参数列表
*/
public ResultSet executeQuery(String sql,Object [] params){
//获取连接
this.conn=getConnection();
try {
//获取PreparedStatement对象,通过连接对象获取
ps=conn.prepareStatement(sql);
//判断参数列表是否为空
if(params!=null){
for (int i = 0; i < params.length; i++) {
//设置占位符
ps.setObject(i+1, params[i]);
}
}
//执行查询并返回结果集
rs=ps.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
//返回结果集
return rs;
}
/*
* 增加删除改
*/
public int executeUpdate(String sql,Object[] params){
//影响行数
int updateNum=0;
//获取连接
this.conn=getConnection();
try {
//获取PreparedStatement对象,通过conn
ps=conn.prepareStatement(sql);
//判断参数列表是否为空
if(params!=null){
//设置占位符
for (int i = 0; i < params.length; i++) {
ps.setObject(i+1, params[i]);
}
}
//执行,增,删除,修改
updateNum=ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally{
//关闭连接
closeConnection();
}
//返回影响行数
return updateNum;
}
/*
* 关闭连接
*/
public void closeConnection(){
try {
if(rs!=null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(ps!=null)
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}<span style="font-family:Microsoft YaHei;font-size:24px;color:#ff0000;"><strong>
</strong></span>
二、使用资源文件来管理
2.1、资源文件
jdbc.properties
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracl:thin:@localhost:1521:orcl
jdbc.username=scott
jdbc.password=tiger
2.2、工具类来读取资源文件
package com.pb.util;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* 读取资源文件工具类
* 同时也是一个单例模式
* 使用Properties来获取资源文件的内容
*/
public class ConfigManager {
//初始化类实例 饿汉式
private static final ConfigManager configManager=new ConfigManager();
//资源类
private static Properties prop;
/*
* 私有构造方法
* 并初始化Properties
*/
private ConfigManager(){
//资源文件名
String jdbcFile="jdbc.properties";
//实例化Properties
prop=new Properties();
//使用类加载器,加载配置文件内容
InputStream is=ConfigManager.class.getClassLoader().getResourceAsStream(jdbcFile);
//加载资源文件流到Properties
try {
prop.load(is);
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//饿汉式
public static ConfigManager getInstance(){
return configManager;
}
/*
* 根据键盘key来获取值,
* 使用Properties.getProperty()来获取对象的键-值
*/
public String getValue(String key){
return prop.getProperty(key);
}
}
2.3、BaseDao
package com.pb.base;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.pb.util.ConfigManager;
public class BaseDao {
protected Connection conn;
protected PreparedStatement ps;
protected ResultSet rs;
/*
* 获取连接
*/
public Connection getConnection(){
/*使用工具类,读取数据库信息,只需要转入properties中的key值
* 如果数据库连接变了只需要改变properties中的数据即可
*/
String driver=ConfigManager.getInstance().getValue("jdbc.driver");
String url=ConfigManager.getInstance().getValue("jdbc.url");
String username=ConfigManager.getInstance().getValue("jdbc.username");
String password=ConfigManager.getInstance().getValue("jdbc.password");
//System.out.println(driver+"...."+url+"..."+username+"..."+password);
try {
//加载驱动
Class.forName(driver);
conn=DriverManager.getConnection(url,username,password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/*
* 查询
* sql--SQL语句
* params参数列表
*/
public ResultSet executeQuery(String sql,Object [] params){
//获取连接
this.conn=getConnection();
try {
//获取PreparedStatement对象,通过连接对象获取
ps=conn.prepareStatement(sql);
//判断参数列表是否为空
if(params!=null){
for (int i = 0; i < params.length; i++) {
//设置占位符
ps.setObject(i+1, params[i]);
}
}
//执行查询并返回结果集
rs=ps.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
//返回结果集
return rs;
}
/*
* 增加删除改
*/
public int executeUpdate(String sql,Object[] params){
//影响行数
int updateNum=0;
//获取连接
this.conn=getConnection();
try {
//获取PreparedStatement对象,通过conn
ps=conn.prepareStatement(sql);
//判断参数列表是否为空
if(params!=null){
//设置占位符
for (int i = 0; i < params.length; i++) {
ps.setObject(i+1, params[i]);
}
}
//执行,增,删除,修改
updateNum=ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally{
//关闭连接
closeConnection();
}
//返回影响行数
return updateNum;
}
/*
* 关闭连接
*/
public void closeConnection(){
try {
if(rs!=null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(ps!=null)
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new BaseDao().getConnection();
}
}