Java培训-Oracle学习【1】数据库连接

1.连接ORACLE数据库:

  1. 连接放在同一个类的主方法中

package com.softeem.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCTest {
    
    public static void main(String[] args) {
        Connection conn=null;
        Statement st=null;
        ResultSet rs=null;
        
        try {
            //数据库连接
            Class.forName("oracle.jdbc.driver.OracleDriver");
            conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","system","system");
            //数据库查询
            
            st=conn.createStatement();
            rs=st.executeQuery("SELECT * FROM users");
            while(rs.next()){
                String stuid=rs.getString("stuid");
                String stuname=rs.getString("stuname");
                System.out.println(stuid+"\t"+stuname);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                rs.close();
                st.close();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

   2.连接与操作分开:

        2.1 对数据库连接与关闭的工具类

package com.ming.jdbc;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;

public class DBUtil {

    // 定义变量
    private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
    private static final String url = "jdbc:oracle:thin:@localhost:1521:orcl";
    private static final String username = "scott";
    private static final String password = "a123";

    // 加载驱动
    static {
        try {
            Class.forName(DRIVER);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static Connection connection() {
        Connection connection = null;
        try {
            connection = DriverManager.getConnection(url, username, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }

    public static void closeConn(Connection conn) {
        if (null != connection()) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    // 重载
    public static void closeConn(ResultSet rs, Statement sm, Connection conn) {
        try {
            if (null != rs) {
                rs.close();
            }
            if (null != sm) {
                sm.close();
            }
            if (null != conn) {
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

          2.2 对数据库的操作类

package com.ming.jdbc;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;

public class DBOperation {
    
    /**
     * @param sql 创建表的SQL
     * @return 表是否创建成功
     */
    public static boolean getConn(String sql){
        boolean b=true;
        Connection conn=DBUtil.connection();
        try {
            Statement sm=conn.createStatement();
            sm.executeUpdate(sql);
        } catch (SQLException e) {
            b=false;
            e.printStackTrace();
        }finally{    
            DBUtil.closeConn(conn);
        }
        return b;
    }
    
    //CRUD  C:create R:read U:update D:delete
    public static boolean cudOperation(String sql){
        boolean b=false;
        Connection conn=DBUtil.connection();
        try {
            Statement sm=conn.createStatement();
            int i=sm.executeUpdate(sql);
            if(i>0){
                b=true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{    
            DBUtil.closeConn(conn);
        }
        return b;
    }
    
    public static void query(String sql){
        Connection conn=null;
        try {
            conn=DBUtil.connection();
            Statement sm=conn.createStatement();
            ResultSet rs=sm.executeQuery(sql);
            System.out.println("员工号 \t\t"+"员工姓名 \t\t"+"职位  \t\t"+""+"工资  \t\t");
            while(rs.next()){
                String empno=rs.getString("empno");
                String ename=rs.getString("ename");
                String job=rs.getString("job");
                String sal=rs.getString("sal");
                System.out.println(empno+"\t\t"+ename+"\t\t"+job+"\t\t"+sal);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            DBUtil.closeConn(conn);
        }
    }

}

2. 对象的序列化

    1.创建学生对象

package com.softeem.bean;

import java.io.Serializable;

public class StudentBean implements Serializable {
// 表中的列  与  bean中的字段是一一对应关系
//  student 表
//       student bean  传值  查询结果的封装,一条对应一个对象
//       student dao   操作
//    DAO data access  object  面向数据库的直接操作,增删改查....
//     用户--〉100(控制台), 100-8(service 业务处理) ---> 92(dao)
//    1 出纳 收集数据,计算  签字
//    2 会计 审核                   签字
//    3 总经理                       签字
//    银行转账
    
    // 学号 char(3) primary key,
    // 姓名 char(4),
    // 性别 char(2),
    // 年龄 int,
    // 班级 char(5)

    private String stuNo;
    private String stuName;
    private String stuSex;
    private int stuAge;
    private String stuClass;

    public String getStuNo() {
        return stuNo;
    }

    public void setStuNo(String stuNo) {
        this.stuNo = stuNo;
    }

    public String getStuName() {
        return stuName;
    }

    public void setStuName(String stuName) {
        this.stuName = stuName;
    }

    public String getStuSex() {
        return stuSex;
    }

    public void setStuSex(String stuSex) {
        this.stuSex = stuSex;
    }

    public int getStuAge() {
        return stuAge;
    }

    public void setStuAge(int stuAge) {
        this.stuAge = stuAge;
    }

    public String getStuClass() {
        return stuClass;
    }

    public void setStuClass(String stuClass) {
        this.stuClass = stuClass;
    }

}

    2.对学生对象操作

package com.softeem.jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import com.softeem.bean.StudentBean;

/**
 * softeem.student
 * 
 * @author Administrator
 * 
 */
public class StudentDAO {
//  stu 封装数据 并传值    
    public static void insert(StudentBean stu) {
        String sqlString = "insert into student(学号,姓名,性别,年龄,班级) "
                + "values(?,?,?,?,?)";
        Connection con = DbUtil.getConn();
        try {
//            预编译
            PreparedStatement ps = con.prepareStatement(sqlString);
            ps.setString(1, stu.getStuNo());
            ps.setString(2, stu.getStuName());
            ps.setString(3, stu.getStuSex());
            ps.setInt(4, stu.getStuAge());
            ps.setString(5, stu.getStuClass());

            int row = ps.executeUpdate();
            System.out.println(row);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            DbUtil.close(con);
        }
    }
    
    public static ArrayList query(String stuNO){
//        无条件 select * from student 
        String sql = "select * from student where 学号=?";
        Connection con = DbUtil.getConn();
        ArrayList<StudentBean> students = new ArrayList<StudentBean>();
        try {
            PreparedStatement  ps= con.prepareStatement(sql);
            ps.setString(1, stuNO);
            ResultSet rs =  ps.executeQuery();
            StudentBean sb = null;
            while(rs.next()){
                sb = new StudentBean();
                String stuNo =rs.getString("学号");
                String stuName =rs.getString("姓名");
                String stuSex =rs.getString("性别");
                int stuAge =rs.getInt("年龄");
                String stuClass =rs.getString("班级");
                sb.setStuAge(stuAge);
                sb.setStuClass(stuClass);
                sb.setStuName(stuName);
                sb.setStuNo(stuNo);
                sb.setStuSex(stuSex);
                students.add(sb);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return students;
        
        
        
        
    }
}

3.数据库连接池

    1.简单操作

package com.softeem.dbcp;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.apache.commons.dbcp.BasicDataSource;

public class DbcpDemo {
    // 定义常量
    private static final String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
    private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
    private static final String USERNAME = "softeem";
    private static final String PASSWORD = "softeem";

    public static BasicDataSource getDs() {
        // 创建一个数据源
        BasicDataSource ds = new BasicDataSource();
        // set
        ds.setDriverClassName(DRIVER);
        ds.setUrl(URL);
        ds.setUsername(USERNAME);
        ds.setPassword(PASSWORD);
        // 设置最大连接数
        ds.setMaxActive(20);
        return ds;
    }

    public static Connection getCon() {
        Connection connection = null;
        try {
            connection = getDs().getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }

    // 关闭 连接 ps rs
    public static void close(ResultSet rs, Statement st, Connection con) {
        try {
            if (rs != null)
                rs.close();
            if (st != null)
                st.close();
            if (con != null)
                con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

    2.使用单例模式

package com.softeem.dbcp;

import java.sql.Connection;
import java.sql.SQLException;

import org.apache.commons.dbcp.BasicDataSource;

public class SingleDbcp {

    // 定义常量
    private static final String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
    private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
    private static final String USERNAME = "softeem";
    private static final String PASSWORD = "softeem";

    private static SingleDbcp singleDbcp;

    // 构造器私有化
    private SingleDbcp() {
    }

    public static synchronized SingleDbcp getSingleDbcp() {
        if (singleDbcp == null)
            singleDbcp = new SingleDbcp();
        return singleDbcp;
    }

    public BasicDataSource getDs() {

        // 创建一个数据源
        BasicDataSource ds = new BasicDataSource();
        // set
        ds.setDriverClassName(DRIVER);
        ds.setUrl(URL);
        ds.setUsername(USERNAME);
        ds.setPassword(PASSWORD);
        // 设置最大连接数
        ds.setMaxActive(20);
        return ds;
    }

    public Connection getCon() {
        Connection con = null;
        try {
            con = getDs().getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return con;
    }

}

    3.使用属性文件

         3.1 写属性文件

DRIVER=oracle.jdbc.driver.OracleDriver
URL=jdbc:oracle:thin:@localhost:1521:orcl
USERNAME=scott
PASSWORD=a123

         3.2 读取属性文件

package com.softeem.dbcp;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

public class ReadProperties {

    public static String url;
    public static String driver;
    public static String username;
    public static String password;
    // path 如果文件在工程下面 path=文件名
    private static FileInputStream fis = null;
    private static  Properties ps = null;
    
   static{
    // ctrl+shift+ y(小写 ) x(大写)
        try {
            fis = new FileInputStream("db.properties");
            ps = new Properties();
            ps.load(fis);
             url = ps.getProperty("URL");
             driver = ps.getProperty("DRIVER");
             username = ps.getProperty("USERNAME");
             password = ps.getProperty("PASSWORD");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
   }
}

         3.3 用属性文件操作连接池

package com.softeem.dbcp;

import java.sql.Connection;
import java.sql.SQLException;

import org.apache.commons.dbcp.BasicDataSource;

public class SingleDbcp2 {

    // 定义常量
    static BasicDataSource ds = null;
    static {

        // 创建一个数据源
        ds = new BasicDataSource();
        // set
        ds.setDriverClassName(ReadProperties.driver);
        ds.setUrl(ReadProperties.url);
        ds.setUsername(ReadProperties.username);
        ds.setPassword(ReadProperties.password);
        // 设置最大连接数
        ds.setMaxActive(20);
    }

    public Connection getCon() {
        Connection con = null;
        try {
            con = ds.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return con;
    }

}


本文出自 “ming” 博客,谢绝转载!

你可能感兴趣的:(oracle,数据库连接,package,java培训)