面向接口编程:是为了解耦合,提高程序的扩展力
(多态机制就是非常经典的:面向抽象编程)
JDBC 编程六步:
- 注册驱动(告诉 JAVA,即将要连接的是哪个品牌的数据库)
- 获取连接(表示 JVM的进程喝数据库进程之间的通道打开了,属于进程之间的通信,使用完了要关闭)
- 获取数据库操作对象
- 执行 sql 语句
- 处理查询结果(只有上一步执行的是 select 语句的时候,才有结果)
- 释放资源(因为 JAVA 喝数据库属于进程间的通信,开启后要关闭)
这是配置文件:
DB_url=jdbc:MysqL://localhost:3306/dbtest
username=root
password=rootroot
driver=com.MysqL.cj.jdbc.Driver
步骤:
public class DBConnection {
public static void main(String[] args) {
//使用资源绑定器,绑定配置文件
ResourceBundle bundle = ResourceBundle.getBundle("jdbctest");
String driver = bundle.getString("driver");
String url = bundle.getString("DB_url");
String username = bundle.getString("username");
String password = bundle.getString("password");
Statement statement = null;
ResultSet resultSet = null;
Connection connection = null;
try {
//1.注册JDBC驱动
Class.forName("com.MysqL.cj.jdbc.Driver");
//2.获取数据库连接
connection = DriverManager.getConnection(url, username, password);
System.out.println("数据库连接对象=" + connection);
//3.对数据库操作
//Statement 专门执行 sql 语句的
statement = connection.createStatement();//获取操作数据库的对象
String sql = "select * from bookinfo";//执行 sql
resultSet = statement.executeQuery(sql);//执行数据库语句获取结果集
//int executeUpdate(insert/delete/update)
while (resultSet.next()) {
int bookid = resultSet.getInt("book_id");
String bookname = resultSet.getNString("booK_name");
BigDecimal price = resultSet.getBigDecimal("price");
Date publicdate = resultSet.getDate("public_date");
int store = resultSet.getInt("store");
System.out.println("图书编号" + bookid);
System.out.println("图书名" + bookname);
}
} catch (ClassNotFoundException e) {
e.printstacktrace();
}
catch (sqlException e){
e.printstacktrace();
}
finally {
//4.关闭结果集,数据库操作对象,数据库连接
try {
if (statement != null) {
statement.close();
}
}catch (sqlException e){
e.printstacktrace();
}
try {
if (connection != null) {
connection.close();
}
}catch (sqlException e){
e.printstacktrace();
}
try {
if (resultSet != null) {
resultSet.close();
}
}catch (sqlException e){
e.printstacktrace();
}
}
}
}