jdbc入门

目录

一、JDBC概述

二、JDBC主要API

三、JDBC  CRUD操作

3.1JDBC操作数据库一般流程

3.2操作步骤

3.2.1下载依赖

3.2.2导入jar包

3.2.3创建类,测试连接

3.2.4实现增删改查

3.3Mysql 5.x和Mysql 8.x的区别

3.4jdbc面试题

jdbc连接数据库的基本步骤(掌握**)

Statement和PreparedStatement的区别 (掌握***)


一、JDBC概述

JDBC是Java Database Connectivity的缩写,意为Java数据库连接。是Java提供的一种数据库访问规则、规范, 由于数据库种类较多,并且java语言使用比较广泛,sun公司就提供了一种规范,让其他的数据库提供商去实现底层的访问规则。 Java程序只要使用sun公司提供的标准接口去操作数据库即可。

二、JDBC主要API

  • DriverManager (管理驱动:注册驱动、获取连接对象)
  • Connection (代表到数据库的连接,获取执行对象、管理事务、释放资源)
  • Statement、PreparedStatement (执行对象,可以执行CRUD语句、释放资源)
  • ResultSet (查询结果集对象,封装了查询结果、释放资源)

三、JDBC  CRUD操作

3.1JDBC操作数据库一般流程

  1.  加载驱动类(只需加载一次,新版本JDK可以省略)
  2.  获取连接对象`Connection`
  3.  获取执行语句对象`Statement`或`PreparedStatement`,执行SQL语句
  4.  使用`ResultSet`对象接收数据库查询结果(一般只有查询语句需要)
  5.  将`ResultSet`中的结果封装成对应的`JavaBean`类型对象
  6.  释放资源、关闭连接

3.2操作步骤

3.2.1下载依赖

Maven Repository: Search/Browse/Explore

选一个引用量高的下载,详见下面推荐

3.2.2导入jar包

3.2.3创建类,测试连接

3.2.4实现增删改查

3.3Mysql 5.x和Mysql 8.x的区别

在使用JDBC操作数据库时,会发现虽然能操作成功,但是总是会出现如下的提示信息

这个提示信息的含义是现在我们使用的Mysql驱动是com.mysql.jdbc.Driver,但是新的Mysql驱动为com.mysql.cj.jdbc.Driver。为什么会出现这种提示信息呢?主要是因为我们现在使用的数据库为Mysql 8.x,而Mysql在Mysql 8.x上做出了很多更新,使得我们在使用Mysql 8.x的时候跟使用Mysql 5.x版本是有一些区别的。

  • Mysql 5.x和Mysql 8.x使用的驱动不同
  //Mysql 5.x驱动加载
  Class.forName("com.mysql.jdbc.Driver"); 
  
  //Mysql 8.x驱动加载
  Class.forName("com.mysql.cj.jdbc.Driver"); 
  • Mysql 5.x和Mysql 8.x使用的数据库连接不同
  //Mysql 5.x数据库访问地址
  private static final String URL="jdbc:mysql://localhost:3306/db9";      
      
  //Mysql 8.x数据库访问地址
  private static final String URL="jdbc:mysql://localhost:3306/db9?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai";

3.4jdbc面试题

jdbc连接数据库的基本步骤(掌握**)

1.加载数据库驱动

Class.forName("com.mysql.jdbc.Driver"); // MySQL 5.x
// 或 MySQL 8.x+
Class.forName("com.mysql.cj.jdbc.Driver");

2.建立数据库连接

String url = "jdbc:mysql://localhost:3306/数据库名?useSSL=false&serverTimezone=UTC";
String user = "用户名";
String password = "密码";
Connection conn = DriverManager.getConnection(url, user, password);

3.创建Statement 或者PreparedStatement

Statement statement = conn.createStatement();
// 或
PreparedStatement preparedstatement = conn.prepareStatement("SELECT * FROM table WHERE id=?");

4.执行SQL语句

// 查询
ResultSet rs = stmt.executeQuery("SELECT * FROM table");
// 或
pstmt.setInt(1, 1001);
ResultSet rs = pstmt.executeQuery();

// 更新
int rows = stmt.executeUpdate("UPDATE table SET column='value' WHERE id=1");

5.处理结果集

while(rs.next()) {
    String name = rs.getString("column_name");
    int id = rs.getInt("id");
    // ...
}

6.关闭资源(从内到外)

rs.close();
stmt.close(); // 或 pstmt.close()
conn.close();

Statement和PreparedStatement的区别 (掌握***)

Statement接口用来执行一段SQL语句并返回结果,不支持参数占位符写法。Statement执行 ,其实是拼接sql语句的。  先拼接sql语句,然后再一起执行。如果传入的参数是一段可执行的SQL,也会被执行,**有SQL注入的风险。**

PreparedStatement接口继承自Statement接口,相比较以前的statement, **预先处理给定的sql语句**,对其执行语法检查。 在sql语句里面使用 ? **占位符**来替代后续要传递进来的变量。 后面进来的变量值,只会被看成参数值,不会产生任何的关键字的效果。

Statement支持表名、列名动态传入,如果表名、列名不固定,不能使用PreparedStatement。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值