JDBC基础知识/快速入门

编程入门 行业动态 更新时间:2024-10-16 16:49:58

JDBC<a href=https://www.elefans.com/category/jswz/34/1769428.html style=基础知识/快速入门"/>

JDBC基础知识/快速入门

JDBC简介

JDBC概念:

  1. JDBC就是使用Java语言操作关系型数据库的一套API
  2. 全称:(Java DataBase Connectivity)Java数据库连接

JDBC

  1. 官方(sun 公司)定义了一套操作所有数据库的规则,即接口
  2. 各个数据库厂商去实现这套接口,提供数据驱动jar包

JDBC的好处

  1. 各个数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发
  2. 可随时替换底层数据库,访问数据库的Java代码基本不变

JDBC 的快速入门

步骤:

  1. 注册驱动

    Class.forName("com.mysql.cj.jdbc.Driver");//5.0版本以后可以省略不写
    
  2. 获取连接

    Connecting conn = DriverManager.getConnection(url,username,password);
    
  3. 定义SQL语句

    String sql = "updata...";
    
  4. 获取执行SQL对象

    Statement stmt = conn.createStatement();
    
  5. 执行SQL

    stmt.executeUpdate(sql);
    
  6. 处理返回结果

  7. 释放资源

案例:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;//JDBC 快速入门
public class Jdbc {public static void main(String[] args) throws Exception {//注册驱动Class.forName("com.mysql.cj.jdbc.Driver");//5.0版本以后可以省略不写//2、获取连接String url = "jdbc:mysql:///d_students?useSSL=false&characterEncoding=utf8&serverTimezone=GMT";String username = "root";String password = "rootpassword";Connection conn = DriverManager.getConnection(url, username, password);//3、定义sqlString sql = "update s_student set age = 2000 where no = 1";//4、获取执行SQL的对象 对象就是StatementStatement stmt = conn.createStatement();//5、执行sqlint count = stmt.executeUpdate(sql);//受影响的行数//6、处理结果System.out.println(count);//释放资源stmt.close();conn.close();}
}

JDBC API详解

API:

  • DriverManager
  • Connection
  • Statement
  • ResultSet
  • PreparedStatement
DriverManager:
  • DriverManager(驱动管理类) 作用:
  1. 注册驱动

  2. 获取数据库连接

    static Connection       getConnection(String url,String user,String password);
    
    • 参数

      • url :连接路径

        语法:   jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2....注:  1.如果连接的是本机mysql服务器,并且MySQL服务器默认端口是3306,url可以简写为:jdbc:mysql:///数据库名称?参数键值对1&参数键值对2....2.配置use = false 参数,禁用安全连接方式,解决警告提示
        
        • user: 用户名
        • password: 密码
Connection:
  • Connection(数据库连接对象)作用:

    1. 获取执行SQL对象

      • 普通执行SQL对象

        Statement   createStatement();
        
      • 预编译SQL的执行SQL对象 : 防止SQL注入

        PreparedStatement prepareStatement(sql); 
        
      • 执行存储过程的对象

        CallableStatement  prepareCall(sql); 
        
    2. 事务管理

      • MySQL事务管理

        开启事务:BEGIN;/START TRANSACTION
        提交事务: COMMIT;
        回滚事务:ROOLLBACKMySQL默认自动提交事务
        
      • JDBC事务管理:Connection接口定义了三个构造方法

        开启事务:setAutoCommit(boolean autoCommit) : true为自动提交事务;false为手动提交事务,即为开启事务
        提交事务:commit()
        回滚事务:rollback()
        
Statement:
  • Statement作用:

    1. 执行SQL语句
  • 执行SQL语句

    int executeUpdate(sql):执行DML、DDL语句
    -->返回值:(1)DML语句影响的行数  (2)DDL语句执行后,执行成功也可能返回 0 ResultSet executeQuery(sql): 执行DQL语句
    -->返回值:ResultSet结果集合对象
    
ResultSet:
  • ResultSet(结果集对象)作用:

    1. 封装了DQL查询语句的结果

      ResultSet stmt.executeQuery(sql)  //执行DQL语句,返回ResultSet对象 
      
    2. 获取查询结果:

      boolean next()  // 1.将光标从当前位置向前移动一行// 2.判断当前行是否为有效行-->返回值true   : 有效行;当前行有数据false  :无效行;当前行没有数据xxx.getXxx(参数) : 获取数据-->xxx:数据类型;如:int getInt(参数);....-->参数:int    : 列的编号,从1开始String : 列的名称
      
    3. ResultSet使用步骤:

      • 游标向下移动一行,并判断该行否有数据

      • 获取数据 getXxx(参数) //循环判断游标是否是最后一行末尾

        while(rs.next()){

        ​ //获取数据

        ​ rs.getXxx(参数);

        }

PreparedStatement:
  • PreparedStatement
    • 预编译SQL语句并执行:预防SQL注入问题
  • SQL注入
    • SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法

SQL注入:‘or’1’='1 注入原因在于拼字符串

解决SQL注入问题:
  • PreparedStatement作用:

    1. 预编译SQL并执行SQL语句
    • 获取PreparedStatement对象

      //SQL语句中的参数值,使用?占位符替代
      String sql = “select * from user where username = ? and password = ?”;
      //通过Connection pstmt = conn。preparedStatement(sql);
      
    • 设置参数值

      PreparedStatement对象:setxxx(参数1,参数2):给?赋值
      -->Xxx:数据类型;如setInt(参数1,参数2)
      -->1、参数1:?的位置编码,从1开始2、参数2:?的值
      
    • 执行SQL

      executeUpdate;/executeQuery();:不需要在传递sql
      
  • PreparedStatement 好处:

    • 预编译SQL,性能更高
    • 防止SQL注入:将敏感字符进行转义
  • PreparedStatement 预编译功能开启: useServerPrepStmts=true

  • 配置MySQL执行日志(重启MySQL服务后生效)

    log-output=FILE
    general-log=1
    general_log_file="D:\mysql.log"
    slow-query-log=1
    slow_query_log_file="D:\mysql_slow.log"
    long_query_time=2
    
数据库连接池:
  • 数据库连接池简介:

    • 数据库连接池是一个容器,负责分配、管理数据库连接(Connection)
    • 它允许应用程序重读使用一个现有数据库连接,而不是再重新建立一个
    • 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
    • 好处
      • 资源重用
      • 提升系统响应速度
      • 避免数据库连接遗漏
  • 数据库连接池实现:

    • 标准接口: DataSource

      • 官方(SUN)提供的数据库连接池标准接口,有第三方组织实现此接口

      • 功能:获取连接

        Connection getConnection()
        
    • 常见的数据库连接池:

      • DBCP
      • C3P0
      • Druid
    • Druid(德鲁伊)

      • Druid连接池是阿里巴巴开源的数据库连接池项目
      • 功能强大,性能优秀,是Java语言最好的数据库连接池之一
  • Druid使用步骤

    1. 导入jar包druid-1.1.12.jar
    2. 定义配置文件
    3. 加载配置文件
    4. 获取数据库连接池对象
    5. 获取连接

更多推荐

JDBC基础知识/快速入门

本文发布于:2024-03-14 11:38:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1736385.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:基础知识   入门   快速   JDBC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!