JDBC使用

JDBC概念
Java Database Connectivity,简称JDBC
JDBC:sun公司定义的一套操作数据库的规范,就是接口

四个核心的对象
DriverManager:依据数据库的不同,管理JDBC驱动
Connection: 负责连接数据库并担任传送数据的任务
Statement: 由 Connection 产生、负责执行SQL语句
ResultSet:负责保存Statement执行后所产生的查询结果

使用步骤
注册驱动
获取数据库连接对象 Connection
定义sql
获取执行sql语句的对象 Statement
执行sql,接受返回结果
处理结果
释放资源
# 注册驱动
    Class.forName("com.mysql.jdbc.Driver");
    - 括号中的数据不知道怎么写的时候,可以去复制
# 获取数据库连接对象 Connection,故名思意,连接肯定需要连接的地址,用户名和密码
    Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc", "root", "root");
    - 如果java操作数据库的时候有乱码,可以在地址后面跟   ?useUnicode=true&characterEncoding=UTF-8
# 定义sql语句,就是个字符串,如果需要字符串拼接,注意单引号。
     String sql = "update person set name='哈哈哈' where id=1";
# 获取执行sql语句的对象 Statement,是由连接对象创建出来的
    Statement statement = connection.createStatement();
# 执行sql,接受返回结果
    - 1.查询executeQuery(SQL),会有返回值ResultSet,保存了查询的结果
    - 2.增删改executeUpdate(增删改SQL),返回一个数据,表示数据库中受影响的行数
# 处理结果 
    - ResultSet,可以把ResultSet看成我们java里的set,迭代的时候用next()方法
    - 获取每一列resultSet.getString(),括号中的参数可以是数字,从1开始,表示第几列,也可以是字符串,列名的字符串。
# 释放资源
    调用close()的方法
SQL注入
# statement执行sql语句的时候会有sql注入的风险,所以推荐使用PreparedStatemen
    PreparedStatement ps = con.prepareStatement(sql);
    sql语句中的参数可以使用?代替
    statement.setInt(索引,值); 索引从1开始的
    setXXX  XXX代表数据类型
# 查询使用executeQuery(); 增删改使用executeUpdate();
    
工具类:节省代码量
public class JDBCUtils {
    private JDBCUtils(){}
    private static String url = "jdbc:mysql://localhost:3306/xuexi?useUnicode=true&characterEncoding=UTF-8";
    private static String user="root";
    private static String password="root";
    private static String driver="com.mysql.jdbc.Driver";
    static {
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
 
    public static Connection getConnection(){
        Connection connection = null;
        try {
            connection = DriverManager.getConnection(url,user,password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }
 
    public static void release(Connection connection, Statement statement, ResultSet resultSet){
        if(resultSet!=null){
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(connection!=null){
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
 
        if(statement!=null){
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

}

你可能感兴趣的:(oracle,数据库)