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;
}