MySQL笔记--JDBC

MySQL笔记--JDBC

一、基本概念

Java database connection java 连接数据库
Sun公司定义个用java连接所有数据库的一组接口 不同数据库厂商根据自己的数据库 提供jdbc的实现类 用于实现与java连接---数据库驱动


图片

二、步骤

  1. 导入驱动 jar 包

  2. 准备 JDBC 四大参数

    • 驱动类
    • 账号
    • 密码
    • 数据库服务器的 URL
      • URL 格式: 协议名称/主机名:端口号/目录/资源?请求参数
      • JDBC 的 URL : jdbc:mysql://localhost:3306/db_26
        String name ="root";
        // MySQL 用户名
        String pwd = "root";
        // MySQL 密码
        String driverClass="com.mysql.jdbc.Driver";
        // 驱动
        String url="jdbc:mysql://127.0.0.1:3306/db_26"
        // URL
  3. 加载驱动类 com.sql.jabc.Driver

     Class.forName(URL);
     # 驱动类的全称
  4. 获取链接 Connection

     Connection con = DriverManager.getConneretcion(url,name,pwd);
  5. 通过 Statement 获取 SQL 语句的发送器对象

     Statement sta = con.createStatement();
  6. 准备 SQL 语句

     String sql = "select * from student";
  7. 通过 Statement 发送 SQL 语句

     ResultSet set = sta.executeQuery(sql);
  8. 解析结果集

     // 通过 next 方法判断 set 是否还有元素可以遍历
     while(set.next()){
     // 获取本行每列的数据
    
     // 指定列的索引,索引从 1 开始
     int sid  = set.getInt(1);
     // 指定列名
     String sname = set.getString("sname");
     }
  9. 关闭 连接

     set.close();
     sta.close();
     con.close();

    三、常用的接口

  10. Class 对类和字节码文件的封装

    • 静态方法:Class.forName("com.mysql.jdbc.Driver"); 于加载参数字符表示的类 类名必须是类的全称
      • 可能抛出异常: ClassNotFoundException
  11. DriverManager 驱动管理类

    • riverManager.getConnection(url,username,userPwd); 取url指定的数据库服务器的连接
      • 可能抛出异常:QLException
  12. Connection 封装连接的接口

    • 实例方法:onnection.createStatement();取sql语句发生器对象
    • 实例方法:onnection.close(); 关闭连接
  13. Statement 用于 Java 给 数据库 发送 SQL 语句

    • 实例方法:sultSet Statement.executeQuery(sql)执行select查询 获取结果集
    • 实例方法:nt Statement.executeUpdate(sql)执行dml/ddl查询 获取影响的行数
    • 实例方法:tatement.close(); 关闭
  14. ResultSet 封装 select 的结果集

    • 实例方法:ResultSet Statement.executeQuery(sql) 执行select查询 获取结果集
    • 实例方法:int Statement.executeUpdate(sql) 执行dml/ddl查询 获取影响的行数
    • 实例方法:Statement.close();关闭
  15. 练习 通过 JDBC 实现 增删更改查

    Static ArrayList<Student> getAll();
    Static Student getOne(int sid);
    Static boolean addOne(Student s);
    Static boolean UpdateOne(Student s);
    Static boolean deleteOne(int sid); 

    四、JDBC 工具类

    package com.zhiyou100.javawebreview.jdbc.learn;
    

import java.sql.*;

/**

  • @packageName: MyUtilOfMySQL

  • @className: com.zhiyou100.javawebreview.jdbc.learn

  • @Description: TODO JDBC 工具类

  • @author: yang

  • @date: 7/14/20

  • / public class MyTool { {

      try {
          Class.forName(DRIVER_CLASS);
      } catch (ClassNotFoundException e) {
          throw new RuntimeException("加载驱动失败");
      }

    }

    private static final String IP = "192.168.217.82"; private static final String PORT = "3306"; private static final String DATABASE_NAME = "db_26"; private static final String USER_NAME = "root"; private static final String USER_PASSWORD = "1"; private static final String DRIVER_CLASS = "com.mysql.jdbc.Driver"; private static final String URL = "jdbc:mysql://" + IP + ":" + PORT + "/" + DATABASE_NAME;

    /**

    • @Description: TODO 获取连接

    • @name: getConnection

    • @param: []

    • @return: java.sql.Connection

    • @date: 7/14/20 17:55

    • @author: yang

    • / public static Connection getConnection() { try {

        return DriverManager.getConnection(URL, USER_NAME, USER_PASSWORD);

      } catch (SQLException throwable) {

        throw new RuntimeException("获取连接失败");

      } }

      /**

    • @Description: TODO 关闭 JDBC

    • @name: close

    • @param: [resultSet, statement, connection]

    • @return: void

    • @date: 7/14/20 19:07

    • @author: yang

    • / public static void close(ResultSet resultSet, Statement statement, Connection connection) { if (resultSet == null) {

        // 如果 resultSet 为 null,关闭 后两个
        close(statement, connection);
        return;

      } if (statement == null || connection == null) {

        throw new RuntimeException("statement 或者 connection 为 null");

      } try {

        resultSet.close();

      } catch (SQLException throwable) {

        throw new RuntimeException("resultSet 关闭失败");

      } try {

        statement.close();

      } catch (SQLException throwable) {

        throw new RuntimeException("statement 关闭失败");

      } try {

        connection.close();

      } catch (SQLException throwable) {

        throw new RuntimeException("connection 关闭失败");

      } }

/**
 * @Description: TODO 关闭 JDBC
 * @name: close
 * @param: [statement, connection]
 * @return: void
 * @date: 7/14/20 19:07
 * @author: yang
 */
public static void close(Statement statement, Connection connection) {
    try {
        statement.close();
    } catch (SQLException throwable) {
        throw new RuntimeException("statement 关闭失败");
    }
    try {
        connection.close();
    } catch (SQLException throwable) {
        throw new RuntimeException("connection 关闭失败");
    }
}


public static void main(String[] args) throws SQLException {

// Connection connection = getConnection(); // Statement statement = connection.createStatement(); // String sql = "select * from student"; // ResultSet resultSet = statement.executeQuery(sql); // while (resultSet.next()) { // int sid = resultSet.getInt("sid"); // String sname = resultSet.getString("sname"); // char sex = resultSet.getString("sex").charAt(0); // int sage = resultSet.getInt("sage"); // int scid = resultSet.getInt("scid"); // Student student = new Student(sid, sname, sex, sage, scid); // System.out.println(student); // } // close(resultSet, statement, connection);

    Connection connection = getConnection();
    Statement statement = connection.createStatement();
    String sql = "alter table tab_3 drop tname ";
    int i = statement.executeUpdate(sql);
    System.out.println(i);
    close(statement, connection);

}

}

### 五、预编译对象 `preparedStatement`
```java
private static Student getOne(int sid) throws SQLException {
        Student student = new Student();
        Connection connection = getConnection();
        // 准备 sql 模版
        String sql = "select * from student where sid=?";
        // 发送 sql 模版,获取预编译对象
        PreparedStatement statement = connection.prepareStatement(sql);
        // 设置 模版的的参数
        statement.setInt(1, sid);
        // 执行查询语句,获取结果集
        ResultSet resultSet = statement.executeQuery();
        // 处理结果集
        while (resultSet.next()) {
            sid = resultSet.getInt("sid");
            String sname = resultSet.getString("sname");
            char sex = resultSet.getString("sex").charAt(0);
            int sage = resultSet.getInt("sage");
            int scid = resultSet.getInt("scid");
            student = new Student(sid, sname, sex, sage, scid);

        }
        // 关闭连接
        close(resultSet, statement, connection);
        return student;
    }

六、其他

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值