- JDBC 介绍
- 几个重要的类
- 主要步骤
- 创建表
- 创建项目
- 编写JDBC工具类
- 具体操作
这就要用到sun公司设定的一套数据库标准了,这套标准就是JDBC(Java Database Connectivity)。但它只是规范,不做具体实现。通过提供DriverManager、Connection、Statement、ResultSet等接口将开发人员与数据库提供商隔离,开发人员只需要面对JDBC接口,无需关心怎么跟数据库交互。
public interface Connection extends Wrapper, AutoCloseable {}
public interface Statement extends Wrapper, AutoCloseable {}
public interface PreparedStatement extends Statement {}
public interface CallableStatement extends PreparedStatement {}
public interface ResultSet extends Wrapper, AutoCloseable {}
几个重要的类
| 类名 | 作用 |
|---|---|
| DriverManager | 驱动管理器,用于注册驱动,是获取Connection对象的入口 |
| Driver | 数据驱动,用于注册驱动,是获取Connection对象的入口 |
| DriverManager | 驱动管理器,用于获取Connection对象 |
| Connection | 数据库连接,用于获取Statement对象、管理事务 |
| Statement | SQL执行器,用于执行SQL |
| ResultSet | 结果集,用于封装和操作查询结果 |
| prepareCall | 用于调用存储过程 |
使用中的注意事项
- 记得释放资源,另外ResultSet和Statement的关闭都不会导致Connection的关闭。
- 需要引入MySQL或者Oracle的驱动包,要把jar包安装在本地(即本项目中)
- 使用PreparedStatement而不是Statement。可以避免SQL注入,并且利用预编译的特点可以提高效率。
一个完整的JDBC保存操作主要包含一下步骤:
- 注册驱动;
- 通过DriverManager获取Connection对象;
- 开启事务;
- 通过Connection获取PreparedStatement对象;
- 设置PreparedStatement的参数;
- 执行保存操作;
- 保存成功提交事务,保存失败回滚事务;
- 释放资源,包括Connection、PreparedStatement、ResultSet。
drop table if exists `student`; create table `student`( `id` varchar(4) not null, `NAME` varchar(20) default null comment '学生姓名', `sex` char(2) default null comment '性别;0-代表女,1-代表男', `birthday` date default null comment '出生日期', `salary` decimal(7,2) default null comment '薪资', primary key (`id`) )engine = innodb default charset= utf8;创建项目 编写JDBC工具类
public class JdbcUtil{
//路径
private static final URL= "jdbc:mysql://localhost:3306/test?characterEncoding=utf8 & serverTimezone=Asia/Shanghai&useSSL=false";
#这里指定字符编码,时区
//数据库用户名
private static final USER = "root";
//数据库密码
private static final PASSWORD = "root";
//数据库连接
public static Connection con = null;
//SQL执行器
public static PreparedStatement st = null;
//结果集
public static ResultSet rs = null;
public static Connection getConnection(){
try{
// 注册驱动
Class.forName("com.mysql.jdbc.Driver");
// 数据库连接
con = DriverManager.getConnection(URL,USER,PASSWORD);
} catch (Exception e){
e.printStackTrace();
}
return con;
}
// 释放资源
public static void getClose(){
if (rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (st != null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (con != null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
具体操作
private void Login(String name, String password) {
try {
Connection con = JdbcUtils.getConnection();
String sql = "select username,password from tb_user where username = ? and password = ?";
PreparedStatement st = con.prepareStatement(sql);
st.setString(1, name);
st.setString(2, password);
ResultSet rs = st.executeQuery();
if (rs.next()) {
System.out.println("登录成功:" + name + " 欢迎你");
} else {
System.out.println("登录失败");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
//释放资源
JdbcUtils.getClose();
}
}



