JDBC

JDBC

使用前提:在Oracle安装路径下找到classes12.jar文件,并复制粘贴到lib文件下,右键jar包–>Build Path–>Add Build Path
1.载入JDBC驱动程序

Class.forName("oracle.jdbc.driver.OracleDriver");

2.定义连接URL

String url="jdbc:oracle:thin:@localhost:1521:orcl";//jdbc:oracle:thin:@<主机名或IP>:1521<端口号>: <数据库名>

3.建立连接

Connection conn=DriverManager.getConnection(url,"scott","123456");
System.out.println(conn)//连接成功!

4.创建Statement对象

Statement stat=conn.createStatment();

5.执行查询或更新

String sql="select empno,ename,job,hiredate from emp"
stat.execute(sql);
//如果查询到的结果为ResultSet对象则返回true;
//如果返回的是查询结果数或者不存在结果则返回false.
stat.excuteQuery(sql);
//适用于查询,返回一个ResultSet结果集。
stat.excuteUpdate(sql);
//适用于增删改查,返回操作改变的记录行数,如果返回0怎么说明修改不成功
ResultSet re=stat.excuteQuery(sql);

6.结果处理

ArrayList<Emp> empList=new ArrayList<>();
while(rs.next()){
    Emp emp=new Emp();
    //声明Emp对象
    emp.setEmpno(rs.getInt("empno"));
    //将每个对象的属性提取出来并存储。
    emplist.add(emp);
    //把对象放进集合。
}
return empList;

7.关闭连接

finally{
if(rs!=null){
    rs.close();
}
if(conn!=null){
    conn.close();
}
//检查一开始声明的对象是否放在try前面。
} 

参数绑定

sql语句中的参数用”?”代替

stat.setInt(1,emp.getEmpno());
//"1"代表第一个参数,"emp.getEmpno()"代表传进去的参数。

封装重复的连接过程

新建config文件夹–>新建file,db.properties

#Oracle
classDriver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:orcl
userName=scott
passWord=123456

新建DButil文件,封装连接过程。

package firstproject;

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

public class DButil {

    private static Properties properties = new Properties();

    static {
        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet rs = null;

        try {
            // 加载外部配置文档db.properties
            properties.load(new FileInputStream("config/db.properties"));

            // 1.载入JDBC驱动程序
            Class.forName(properties.getProperty("classDriver"));

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    // 连接
    public static Connection getConnection() {
        try {
            // 2.定义连接URL
            String url = properties.getProperty("url");
            String userName = properties.getProperty("userName");
            String passWord = properties.getProperty("passWord");

            // 3.建立连接
            Connection conn = DriverManager.getConnection(url, userName, passWord);

            // 4.返回连接
            return conn;

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

    // 关闭连接
    public static void close(Connection conn, PreparedStatement stat, ResultSet rs) {
        try {
            if (rs != null) {
                rs.close();
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            if (stat != null) {
                stat.close();
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}