0
点赞
收藏
分享

微信扫一扫

JDBC快速入门,JDBC各个接口和类详解

WikongGuan 2022-04-04 阅读 111

一、JDBC

1.概念:

  • 1.Java DataBase Connectivity。 java数据库连接,java语言操作数据库。
  • 2.JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。

2.快速入门

1.步骤:

  • 1.导入驱动jar包
    • 1.复制jar包到项目的libs目录下(目录随便起)
    • 2.右键---->add as Library
  • 2.注册驱动
  • 3.获取数据库的连接对象----Connection
  • 4.定义sql
  • 5.获取执行sql语句的对象----Statement
  • 6.执行sql,接收返回结果
  • 7.处理结果
  • 8.释放资源

2.代码实现:

		//1.导入驱动jar包
        //2.注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //3.获取数据库连接对象
        Connection conn = DriverManager.getConnection("jdbc:mysql://主机ip:MySQL开放端口/数据库名称", "用户名", "密码");
        //4.定义sql语句
        String sql = "update account set balance = 500 where id = 1";
        //5.获取执行sql的对象 Statement
        Statement statement = conn.createStatement();
        //6.执行sql
        # executeUpdate 执行insert,delete,update语句,返回值为int类型。它返回的是sql语句执行完成后影响的记录条数
        int count = statement.executeUpdate(sql);
        //7.处理结果
        System.out.println(count);
        //8.释放资源
        statement.close();
        conn.close();

3.详解各个对象

  • 1.DriverManager: 驱动管理对象
    • 1.功能:
      • 1.注册驱动:告诉程序该使用哪一个数据库驱动jar包
        • static void registerDriver(Driver driver):注册与给定的驱动程序 DriverManager.

        • 写代码使用: Class.forName(“com.mysql.jdbc.Driver”);

        • 通过查看源码发现:在com.mysql.jdbc.Driver类中存在静态代码块:

          static{
          	try{
          		java.sql.DriverManager.registerDriver(new Driver());
          	}
          	catch(SQLException E){
          		throw new RuntimeException("Can't register driver!")
          	}
          }
          
        • 注意:MySQL5之后的驱动jar包可以省略注册驱动的步骤。

      • 2.获取数据库连接
        • 1.方法:static Connection getConnection(String url, String user, String password)
        • 2.参数:
          • url:指定的连接路径
            • 语法:jdbc:mysql://主机ip:MySQL开放端口/数据库名称
          • user:用户名
          • password:密码
  • 2.Connection: 数据库连接对象
    • 1.功能:
      • 1.获取执行sql的对象
        • 1.Statement createStatement()
        • 2.PreparedStatement prepareStatement(String sql)
      • 2.管理事务
        • 1.开启事务:setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开启事务
        • 2.提交事务:commit()
        • 3.回滚事务rollback()
  • 3.Statement: 执行sql的对象
    • 1.执行sql
      • 1.boolean execute(String sql):可以执行任意的sql 了解即可
      • 2.int executeUpdate(String sql): 执行DML(insert update delete)语句,也可以执行DDL语句。
        • int返回值:返回的是sql语句执行完成后影响的记录条数
        • 可以通过这个影响的行数判断DML语句是否执行成功。返回值大于0则执行成功。
      • 3.ResultSet executeQuery(String sql):执行DQL(select)语句
  • 4.ResultSet: 结果集对象,封装查询结果
    • 1.boolean next()方法:游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,则返回false,如果不是则返回true
    • 2.getXxx(参数):获取数据
      • Xxx:代表数据类型。 如:int getInt()
      • 参数:
        • 1.int:代表列的编号,从1开始,不是索引。
        • 2.String:代表列名称。
    • 3.注意:
      • 使用步骤:
        • 1.游标向下移动一行
        • 2.判断是否有数据
        • 3.获取数据
  • 5.PreparedStatement: 执行sql的对象
    • 1.sql注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接,会造成安全性问题。
      • 1.输入用户随便,输入密码:a’ or ‘a’ = 'a
    • 2.解决sql注入问题:使用PreparedStatement对象来解决
    • 3.预编译的sql:参数使用?作为占位符
    • 4.步骤:
      • 1.导入驱动jar包
        • 1.复制jar包到项目的libs目录下(目录随便起)
        • 2.右键---->add as Library
      • 2.注册驱动
      • 3.获取数据库的连接对象----Connection
      • 4.定义sql
        • 注意:sql的参数使用?作为占位符
      • 5.获取执行sql语句的对象----PreparedStatement Connection.preparedStatement(String sql)
      • 6.给?赋值:
        • 方法:setXxx(参数1,参数2)
          • 参数1:?的位置编号,从1开始
          • 参数2:?的值
      • 7.执行sql,接收返回结果,不需要传递sql语句
      • 8.处理结果
      • 9.释放资源
    • 5.注意:后期都会使用PreparedStatement 来完成增删改查的的所有操作
      • 1.可以防止sql注入
      • 2.效率更高

4.抽取JDBC工具类: JDBCUtils

  • 1.目的:简化书写

  • 2.分析:

    • 1.注册驱动的抽取
    • 2.抽取一个方法获取连接对象
      • 需求:不想传递参数(麻烦),还得保证工具类的通用性
      • 解决:使用配置文件 jdbc.properties
    • 3.抽取一个方法释放资源
  • 3.练习:

    • 需求:

      • 1.通过键盘录入用户名和密码
      • 2.判断用户是否登录成功
        • select * from user where username=“” and password=“”;
        • 如果这个sql有查询结果,则成功,反之则失败
    • 步骤:

      • 1.创建数据库表 user
      CREATE TABLE USER(
      	id INT PRIMARY KEY AUTO_INCREMENT,
      	username VARCHAR(30),
      	PASSWORD VARCHAR(30)
      );
      
      SELECT * FROM USER;
      
      INSERT INTO USER VALUES(NULL,'zhangsan','123');
      INSERT INTO USER VALUES(NULL,'lisi','234');
      
      
举报

相关推荐

JDBC快速入门

JDBC简介以及快速入门

JDBC入门:JDBC概述

JDBC详解

JDBC 详解~

Jdbc入门

0 条评论