JDBC基本知识

定义

JDBC的全称为Java Database Connectivity,即Java数据库连接,是一种跨平台运行的可执行SQL的Java API。程序可通过JDBC API连接到关系数据库.

架构

JDBC API支持用于数据库访问的两层和三层处理模型,但通常,JDBC体系结构由两层组成:

  • JDBC API:提供应用程序JDBC管理器连接,使用驱动程序管理器并指定数据库的驱动程序来提供与异构数据库的透明连接。
  • JDBC驱动程序API:支持JDBC管理器驱动程序连接,管理器确保使用正确的驱动程序来访问每个数据源。
    在这里插入图片描述

常用组件

JDBC API提供以下接口和类

  • Driver管理数据库驱动。我们很少会直接与Driver对象进行交互。 但会使用DriverManager对象来管理这种类型的对象。 它还提取与使用Driver对象相关的信息。
  • DriverManager: 此类管理数据库驱动程序列表。 使用通信子协议将来自java应用程序的连接请求与适当的数据库驱动程序进行匹配。在JDBC下识别某个子协议的第一个驱动程序将用于建立数据库连接。
  • Connection:此接口具有用于联系数据库的所有方法。 连接(Connection)对象表示通信上下文,即,与数据库的所有通信仅通过连接对象。
  • Statement:执行SQL语句(不能使用?占位符参数),使用从此接口创建的对象将SQL语句提交到数据库。 除了执行存储过程之外,一些派生接口还接受参数。
  • PreparedStatement :Statement的子接口,允许数据库预编译SQL语句(这些SQL通常带有参数,可以带?占位符参数),以后每次只改变命令的参数,避免每次都要编译SQL语句,因此性能更好。(提前编译,效率高,安全)
  • ResultSet:在使用Statement对象执行SQL查询后,这些对象保存从数据库检索的数据。 它作为一个迭代器并可移动ResultSet对象查询的数据。
  • SQLException:此类处理数据库应用程序中发生的任何错误。

编程步骤

  • 操作数据库的步骤
    1、为我们的项目 添加驱动包 .jar
    2、注册 加载 驱动
    3、用过 DriverManager 获取数据库连接 Connection
    4、准备要执行的 sql 字符串,获取数据库的会话 Statement
    5、通过 Statement 执行 sql 语句
    6、操作 数据库结果集
    7、关闭资源
public class ConnMySql {
    public static void main(String[] args) throws Exception {
        //1. 加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        try (
                // 2. 使用DriverManager获取数据库的连接conn
                Connection conn = DriverManager.getConnection(
                        "jdbc:mysql://127.0.0.1:3306/select_test",
                        "root", "32147");
                // 3. 使用Connection创建Statement对象
                Statement stmt = conn.createStatement();
                // 4. 执行SQL语句
                /*
                Statement有三种执行SQL语句的方法:
                1. execute()可执行任何SQL语句:返回boolean值,如果执行后第一个结果为ResultSet,返回true,否则返回false
                2. executeQuery()执行select语句:返回查询到的结果集
                3. executeUpdate()用于执行DML语句:返回整数,代表被SQL影响的记录条数
                * */
                ResultSet rs = stmt.executeQuery("select s.*,teacher_name"
                        + "from student_table s, teacher_table t"
                        + "where t.teacher_id = s.java_teacher"))

        {
            while (rs.next()) {
                System.out.println(rs.getInt(1) + "\t"
                        + rs.getString(2) + "\t"
                        + rs.getString(3) + "\t"
                        + rs.getString(4));
            }
        }
    }
}

占位符

在SQL语句中代替具体值,执行SQL语句时再接收参数

  • ?:原生JDBC中就有,用来在PreparedStatement中代替传入参数的位置。

    具体而言,?在PreparedStatement中用,Statement不能用。
    在PreparedStatement中,只需要传入一次包含占位符的SQL语句,以后每次通过setXxx()传入参数即可;
    在Statement,每次执行SQL语句,均需要传入SQL语句。

  • #{}${}:MyBatis占位符( 详情

常见问题

通配符和占位符的区别

答案


参考文献

https://www.yiibai.com/jdbc/jdbc-introduction.html JDBC常用组件
https://cloud.tencent.com/developer/article/1153770 JDBC工作流程,架构

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值