JDBC介绍

JDBC是连接Java和数据库的桥梁,能够在Java中能够执行SQL语句,是java提供面向关系型数据库额标准接口,通过用Java编写出来的类和接口组成的。

接口名称 说明
Connection java.sql.Connection
Statement java.sql.Statement
PreparedStatement java.sql.PreparedStatement
CallableStatement java.sql.CallableStatement
ResultSet java.sql.ResultSet

JDBC编程步骤
1.初始化
(1)导入装用的jar包(不同的数据库使用的jar包不同)
具体操作流程,在我写的上一篇博客中有详细介绍,这里就不多做介绍了。
(2)初始化驱动
首先声明要初始化驱动,

	1.以反射的方式装载驱动
	
    Class.forName("com.mysql.jdbc.Driver");
    
    2.获取连接对象
    
    final String URL="jdbc:mysql://192.168.xxx.xxx:3306/tableclass? useUnicode=true&characterEncoding=utf-8&useSSL=true"
            ,USERNAME="username",PASSWORD="password";
    //Connection是与特定数据库连接回话的接口,使用的时候需要导包
    Connection con = DriverManager.getConnection(URL,USERNAME,PASSWORD);

其次,建立通用的数据库访问对象

1.先建一个BaseDao

public class BaseDao {
	private String driver;//驱动
    private String url;
	private String username;
	private String password;
	}

2.构造方法,用来传入驱动和连接字符串

	public BaseDao(final String driver, String url, String username, String password) {
    try {
        Class.forName(driver);
    } catch (ClassNotFoundException e) {
        System.err.println("数据库驱动装载失败,系统强制退出");
        System.exit(-1);
    }
    this.url = url;
    this.username = username;
    this.password = password;
}

3.获取连接对象

private Connection getCon() throws SQLException {
    return DriverManager.getConnection(url,username,password);
}

4.获取预编译执行对象
PreparedStatement接口创建之后,可以执行SQL语句,完成对数据库的增删改查

private PreparedStatement getPst(Connection con,final String SQL,Object...params) throws SQLException {
   
    PreparedStatement pst = con.prepareStatement(SQL);
    if (null != params && params.length>0){ //数组长度不为0,params存在
        for (int i = 0; i < params.length; i++) {
            pst.setObject(i+1,params[i]);
        }
    }
    return pst;
}

5.执行增删改操作

 private int update(PreparedStatement pst) throws SQLException {
    return pst.executeUpdate();
}

6.执行查询操作

private ResultSet query(PreparedStatement pst) throws SQLException {
    return pst.executeQuery();
}

7.释放资源

private void close(AutoCloseable...acs){
    for (AutoCloseable ac : acs) {
        if (null!=ac){ //避免出现空指针异常
            try {
                ac.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

8.封装数据库的增删改操作

public int exeUpd(final String SQL,final Object...params){
    int rst = 0;
    Connection con = null;//和数据库取得连接
    PreparedStatement pst = null;//创建statement
    try {
        con = getCon();//连接对象
        pst = getPst(con,SQL,params);//获取预编译执行对象
        rst = update(pst);//执行增删改操作
    } catch (SQLException e) {
        rst = -1;//是-1就出异常了
    }finally {
        close(pst,con);//释放资源
    }
    return rst;
}

你可能感兴趣的:(jdbc,java,mysql,数据库)