JDBC是一种标准Java编程接口(JAVA API),可以将Java编程语言与广泛数据库进行连接。
JDBC API库包含下面提到的每个任务,都是与数据库相关的常用用法。数据库的连接
创建sql语句
执行或提交sql语句
查看或修改查询到的记录
从根本上说,JDBC是一种规范,它提供了一套完整的接口,可以便携式访问底层数据库。
JDBC架构
JDBC API支持两层或三层的处理模式连接数据库,但一般只使用两层处理模式。JDBC API:提供了应用程序对JDBC管理器的连接。
JDBC DRIVER API:提供了JDBC管理器对驱动程序的连接。
JDBC API使用驱动程序管理器和数据库特定的驱动程序来提供异构(heterogeneous)数据库的透明连接。
JDBC驱动程序管理器可确保正确的驱动程序访问每个数据源,驱动程序管理器能够支持连接多个异构数据库的多个并发驱动程序。
JDBC API 提供了以下接口和类
DriverManager:这个类管理一系列数据库驱动程序。使用通信子协议从Java应用程序中请求合适的数据库驱动程序,建立数据库连接。
Driver:这个接口处理与数据库服务器的通信。我们将很少直接与驱动陈旭互动。
Connection:此接口具有操作数据库的所有方法。改连接对象表示通信上下文,即所有与数据库的通信仅通过这个对象连接。
Statement:这个接口的对象将sql语句提交到数据库。
ResultSet:这个接口保存sql语句查询结果。
SqlException:这个类处理发生在数据库应用程序的任何错误。
代码示例
Customer类
public class Customer {
int custId;
String name;
int age;
//getter and setter methods}
数据库访问DAO
public interface CustomerDAO{
public void insert(Customer customer);
public Customer findByCustomerId(int custId);
}
/*** @author :fengzhiwei* @date :Created in 2019/6/10 11:16* @description:${description}*/
public class JdbcCustomerDAO implements CustomerDAO {
private DataSource dataSource;
public DataSource getDataSource() {
return dataSource;
}
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
@Override
public void insert(Customer customer) {
StringBuilder sb = new StringBuilder();
sb.append("insert into customer ")
.append("(cust_id, name, age) ")
.append("value ")
.append("(?,?,?)");
Connection connection = null;
try {
connection = dataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(sb.toString());
preparedStatement.setInt(1, customer.getCustId());
preparedStatement.setString(2, customer.getName());
preparedStatement.setInt(3, customer.getAge());
preparedStatement.executeUpdate();
preparedStatement.close();
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
@Override
public Customer findByCustomerId(int custId) {
StringBuilder sb = new StringBuilder("select * from cutomer where cust_id = ?");
Connection connection = null;
Customer customer = null;
try {
connection = dataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(sb.toString());
preparedStatement.setInt(1, custId);
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
customer = new Customer();
customer.setCustId(resultSet.getInt("cust_id"));
customer.setAge(resultSet.getInt("age"));
customer.setName(resultSet.getString("name"));
}
resultSet.close();
preparedStatement.close();
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return customer;
}
}
Spring 配置文件
class="org.springframework.jdbc.datasource.DriverManagerDataSource">