JDBC复习

举报
京与旧铺 发表于 2022/06/29 16:33:52 2022/06/29
【摘要】 JDBC复习了解JDBC什么是JDBC?JDBC是Java DataBase Connectivity的缩写,它是Java程序访问数据库的标准接口。使用JDBC的好处:个数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发;Java程序编译期仅依赖java.sql包,不依赖具体数据库的jar包;可随时替换底层数据库,访问数据库的Java代码基本不变。JDBC连接Connecti...

JDBC复习

了解JDBC

  • 什么是JDBC?JDBC是Java DataBase Connectivity的缩写,它是Java程序访问数据库的标准接口。

  • 使用JDBC的好处:

    • 个数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发;

    • Java程序编译期仅依赖java.sql包,不依赖具体数据库的jar包;

    • 可随时替换底层数据库,访问数据库的Java代码基本不变。


JDBC连接

  • Connection代表一个JDBC连接,它相当于Java程序到数据库的连接。打开一个Connection时,需要准备URL、用户名和口令(即访问密码),才能成功连接到数据库。

    String url = "jdbc:mysql://locahost:3306/";
    String username = "数据库名";
    String password = "数据库密码";
    //获取连接
    Connection conn = DriverManager.getConnection(url,username,password);
    • 核心代码是DriverManager提供的静态方法getConnection()。DriverManager会自动扫描classpath,找到所有JDBC驱动,然后根据我们传入的URL自动挑选一个合适的驱动。

  • Connection

    • 功能:

      • 获取执行sql的对象

        • Statement createStatement();

        • PreparedStatement ps(String sql);

      • 管理事务

        • 开启事务:setAutoCommit(boolean autoCommit); --调用该方法设置参数为false,即开启事务。

        • 提交事务:commit();

        • 回滚事务:rollback();

  • Statement:执行sql的对象。

    • boolean execute(String sql); --可以执行任意的sql(了解)

    • int executeUpdate(String sql); --执行DML(insert,update,delete)语句、DDL(creat,alter,drop)语句。

      • 返回值:影响的行数,可以通过这个影响的行数判断DML语句是否执行成功,返回值 > 0 的则执行成功,反之则失败。

    • ResultSet executeQuery(String sql); --执行DQL(select)语句。

  • ResultSet:结果集对象,封装查询结果。

    • boolean next():游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,则返回false,如果不是则返回true.

    • while(rs.next()){
          //取出数据
      }
  • PerparedStatement:执行sql对象。

    • 获取sql语句的对象 PreparedStatement Connection.prepareStatement(String sql);

    • Connection conn = null;
      PreparedStatement ps = null;
      //初始化sql语句
      ps = conn.preparenStatement(sql);

总结

  • 接口:

    • Connection:特定数据库的连接。在连接上下文中执行SQL语句并返回结果。

    • PreparedStatement:表示预编译的SQL语句对象。

    • Statement:用于执行静态SQL语句并返回它所生成结果的对象。

    • ResultSet:表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。

    • CallableStatement:用于执行SQL存储过程的接口。

  • Connection conn = null;
          PreparedStatement ps = null;
          ResultSet rs = null;
      
          try {
              Class.forName("com.mysql.cj.jdbc.Driver");
      
              conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myself?serverTimezone=GMT%2B8","root","0826");
      
              String sql = "select name from t_user where name=?";
              ps = conn.prepareStatement(sql);
              ps.setString(1,username);
      
              rs = ps.executeQuery();
      
              if(rs.next()){
                 //光标向前移动一位
                 //条件成立表示光标指向的行有记录
                 //getString()这个方法不管底层数据库表中是什么类型,统一都以String形式返回
                 //也可以以特定类型取出,修改get后面的数据类型就行了。
               //建议括号里面填写查询结果名,比较健壮。
                 rs.getString();
                 String id = rs.getString(1);
               //取当前行第二个数据
               String name = rs.getString(2);
                  
                 System.out.println(id + "," + name);
              }
          } catch (ClassNotFoundException | SQLException e) {
              e.printStackTrace();
          }finally {
              if(rs != null){
                  try {
                      rs.close();
                  } catch (SQLException e) {
                      e.printStackTrace();
                  }
              }
              if(conn != null){
                  try {
                      rs.close();
                  } catch (SQLException e) {
                      e.printStackTrace();
                  }
              }
              if(ps != null){
                  try {
                      rs.close();
                  } catch (SQLException e) {
                      e.printStackTrace();
                  }
              }
          }
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。