Java JDBC连接MySQL数据库和功能类详解

JDBC快速入门

  • ① 导入mysql-connector-java.jar
  • ② 注册驱动
  • ③ 获取数据库连接
  • ④ 获取执行者对象
  • ⑤ 执行 sql 语句,并接收结果
  • ⑥ 处理结果
  • ⑦ 释放资源

代码演示

  • ① 导入mysql-connector-java.jar

    在工程里创建一个 lib 文件夹,将 jar 包文件放到里面去,然后选中 jar 包右键点击 Add as Library...
    在这里插入图片描述
    在这里插入图片描述

    然后点击 OK

  • ② 注册驱动

    Class.forName("com.mysql.jdbc.Driver");
    
  • ③ 获取数据库连接

    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_book", "root", "root");
    
  • ④ 获取执行者对象

    Statement st = conn.createStatement();
    
  • ⑤ 执行 sql 语句,并接收结果

    String sql = "SELECT * FROM book";
    ResultSet rs  = st.executeQuery(sql);
    
  • ⑥ 处理结果

    while(rs.next()){
        System.out.println(rs.getInt("book_id") + "\t" + rs.getString("book_name") + "\t" + rs.getString("book_author") + "\t" + rs.getString("book_publisher"));
    }
    
  • ⑦ 释放资源

    rs.close();
    st.close();
    con.close();
    

功能类详解

DriverManger 驱动管理对象

  • a. 注册驱动

    • 注册给定驱动程序: static void registerDriver(Driver driver);

    • 注册驱动时使用:Class.forName("com.mysql.jdbc.Driver");

    • 为什么不直接调用 registerDriver 去注册驱动呢?

      因为在 com.mysql.jdbc.Driver 类中存在着静态代码块

      static {
          try {
              DriverManager.registerDriver(new Driver());
          } catch (SQLException var1) {
              throw new RuntimeException("Can't register driver!");
          }
      }
      

      这个代码块中已经调用了 registerDriver 方法去注册驱动了,如果我们直接调用registerDriver 方法去注册驱动,将会重复调用两次 registerDriver 方法。而通过 Class.forName("com.mysql.jdbc.Driver") 这种方式将 Driver 类使用一下,而这个类一旦被使用到,里面的静态代码块将会被执行,从而完成驱动的注册

    • mysql5 之后的版本可以省略注册驱动步骤,因为在jar包中,存在一个 java.sql.Driver 配置文件,文件中指定了 com.mysql.jdbc.Driver

  • b. 获取数据库连接

    • 获取数据库对象:static Connection getConnection(String url, String user, String password);
    • 返回值: Connection 数据库连接对象
    • 参数:
      • url:指定连接的路径。语法:jdbc:mysql://ip地址(域名):端口号/数据库名称
      • user:用户名
      • password:密码

Connection 数据库连接对象

  • a. 获取执行者对象
    • 获取普通执行者对象:createStatement(); ,返回一个 Statement 对象
    • 获取预编译执行者对象:prepareStatement(String sql) ,返回一个PreparedStatement 对象
  • b. 管理事务
    • 开启事务: setAutoCommit(boolean autoCommit); 参数为 false 则开启事务
    • 提交事务:commit();
    • 回滚事务:rollback()
  • c. 释放资源
    • 释放资源:void close();

Statement 执行sql语句对象

  • a. 执行DML语句(增删改操作):int executeUpte(String sql);
    • 返回值类型为 int :返回影响的行数
    • 参数sql:可以执行 insertupdatedelete语句
  • b. 执行DQL语句(查询操作):ResultSet executeQuery(String sql);
    • 返回值类型为 ResultSet :封装查询的结果
    • 参数 sql :可以执行的 select 语句
  • c. 释放资源
    • 释放资源:void close();

ResultSet 结果集对象

  • a. 判断结果集中是否还有数据: boolean next()
    • 有数据返回 true ,并将索引向下移动一行
    • 没有数据返回 false
  • b. 获取结果集中的数据:XXX getXxx("列名");
    • XXX 代表着数据类型(获取某一列对应的类型),例如 String getString("name"); int getInt("age");
  • c. 释放资源
    • 释放资源:void close();
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员陈_明勇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值