JDBC学习

JDBC

JDBC(Java DataBase Connection),主要由三个部分组成:驱动管理器(DriverManager)、会话管理(Statement)和结果集管理(ResultSet)

DriverManager

DriverManager 主要有两个功能:管理驱动处理特定驱动与数据库连接

  1. 管理驱动

    Java 与 DB 之间的关系的建立需要一个“中间人”的指引,这里的中间人(即中间件)为 Driver。既然为中间层,它应该有属于 DB 的抽象部分和属于 Java 的抽象部分。属于 Java 的抽象部分即为 DriverManager。

    DriverManager 中可以注册多种驱动,注册驱动的方法有两种:

        /**
         * 两种方法的区别:forName的方式,要保证 Driver 在运行时可用,registerDriver 的方式,需要保证 Driver 在编译时可用
         */
        Class.forName("com.mysql.jdbc.Driver");
        DriverManager.registerDriver(new com.mysql.jdbc.Driver);

    DriverManager 中的方法全部为静态方法。既然是驱动的管理者,就会有删除、获取已注册驱动的方法,具体参看 API

  2. 连接数据库

    调用 getConnection() 来连接数据库。

    数据库连接的 URL 由四部分组成,格式如下:

    jdbc:mysql://localhost:3306/myDatabase?user=root&password=root
    
    • jdbc:mysql://:协议名称
    • localhost:3306:连接主机与端口号,默认端口为 3306
    • myDatabase:数据库名
    • ?user=root&password=root:参数,user和password 参数是内部参数,用来指明登录的用户名和密码。参数以“?”开始,以“&”连接多个参数

三种Statement

  1. Statement

    当没有太多的重复语句的时候,建议使用 Statement,例如:DDL语句(create, alter, drop)

  2. PreparedStatement

    提供了处理参数的能力

  3. CallableStatement

    用来调用存储过程,使用它可以显式的指明输出属性输入参数,然后执行存储过程

  4. 批处理(batch)

    因为一次次的提交事务,开销很大,使用 batch 来将多个 SQL 在一次事务中执行

ResultSet

数据库 Select 结果的映射,可以用它来修改表中的数据,相当于数据库中的一个视图。ResultSet 拥有一个 cursor ,起初指向结果集首行的前面,每调用一次 next(), cursor 就会向下移动一行,当 cursor 后面没有了数据, next() 返回 false

  1. ResultSet 的类型

    • 默认类型:默认类型只能顺序读取一次数据,读取的顺序为 first -> end
    • 回滚类型:可以回滚到前面 cursor 已经经过的行,再次读取
    • 修改类型:设置了修改类型以后,才能对 ResultSet 中的数据进行修改
    • 保持类型:默认情况下,使用同一个 Statement 执行完一个查询,再去执行另一个查询语句的时候,会开始一个新的事务并关闭前一个事务,上一个事务的 ResultSet 也会随着关闭。设置了该类型的 Statement,能够保持 ResultSet 不关闭。

    但是不同的数据库对 JDBC 的实现不同,ResultSet 类型是否起作用需要看该数据库 Driver 的具体实现

  2. 更新视图内容

    使用 ResultSet.updateXXX() 方法可以更新表中内容,但要遵循:

    • 必须选择是单个表
    • 所选的列必须含有 primary key
    • 不能含有 join 和 group by 语句

参考

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值