什么是JDBC?JDBC的开发步骤主要有?

4 篇文章 0 订阅

一.JDBC(Java Database Connectivity)

1.JDBC

JDBC(Java Database Connectivity) Java 连接数据库的规范(标准)。

2.JDBC核心思想

Java 中定义了访问数据库的接口,可以为多种关系型数据库提供统一的访问方式。由数据库厂商提供驱动实现类(Driver 数据库驱动)不同的数据库厂商提供不同的驱动包。

2.1MySQL数据库驱动

  • mysql-connector-java-5.1.X 适用于 5.X 版本

  • mysql-connector-java-8.0.X 适用于 8.X版本

2.2JDBC API

类型权限定名简介
classjava.sql.DriverManager管理多个数据库驱动类,提供了获取数据库连接的方法
interfacejava.sql.Connection代表一个数据库连接(当connection不是null时,表示已连接数据库)
interfacejava.sql.Statement发送SQL语句到数据库工具
interfacejava.sql.ResultSet保存SQL查询语句的结果数据(结果集)
classjava.sql.SQLException处理数据库应用程序时所发生的异常

3.环境搭建

  • 在项目下新建 lib 文件夹,用于存放 jar 文件。
  • 将 mysql 驱动mysql-connector-java-5.1.X复制到项目的 lib 文件夹中。
  • 选中 lib 文件夹右键 Add as Libraay,点击 OK。

二.JDBC开发步骤*

2.1注册驱动(加载驱动)

使用 Class.forName("com.mysql.jdbc.Driver");手动加载字节码文件到JVM中。

Class.forName("com.mysql.jdbc.Driver");//加载驱动

2.2创建数据库连接

通过 DriverManager.getConnection(url,user,password) 获取数据库连接对象

  • url:jdbc:mysql://localhost:3306/database

  • username:root

  • password:123

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf8", "root","1234");

2.3获取statement对象

通过 Connection 对象获得 Statement 对象,用于对数据库进行通用访问。

Statement statement = conn.createStatement();

2.4执行SQL语句

执行 SQL 语句并接收执行结果。

//4.执行sql语句

  • ResultSet resultSet = statement.executeQuery("select * from t_employees");
  • int i = statement.executeUpdate("delete from t_jobs where job_id = 'jm'");

2.5结果处理

2.6释放资源

遵循先开后关原则,释放所所用的资源对象。

  //6.资源释放
            try {
                resultSet.close();
                statement.close();
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }

 综合案例:

import java.sql.*;

public class Demo01 {
    public static void main(String[] args) throws SQLException {
        Connection connection=null;
        Statement statement=null;
        ResultSet resultSet =null;
        try {
            //1.加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 2.建立连接
            connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb3","root","123");
            //3.创建statement对象
            statement=connection.createStatement();
            //4.执行sql语句
            resultSet = statement.executeQuery("select * from t_employees");
            //5.结果处理
            while (resultSet.next()){
                int employeeid = resultSet.getInt(1);
                System.out.println(employeeid);
            }
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }finally {
            //6.资源释放
            try {
                resultSet.close();
                statement.close();
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }

        }

    }
}

三.ResultSet(结果集)

在执行查询 SQL 后,存放查询到的结果集数据。

1.接受结果集

ResultSet rs=statement.executeQuery(sql);

ResultSet rs= statement.executeQuery("SELECT * FROM t_employees;");

2.遍历ResultSet中的数据

ResultSet 以表(table)结构进行临时结果的存储,需要通过 JDBC API 将其中数据进行依次获取。

  • 数据行指针:初始位置在第一行数据前,每调用一次 boolean next()方法ResultSet 的指针向下移动一行,结果为 true,表示当前行有数据。

  • rs.getXxx(整数);代表根据列的编号顺序获得,从 1 开始。

  • rs.getXxx("列名");代表根据列名获得。

2.1遍历方法

  • int getInt(int Index) throws SQLException //获得当前行第N列的int值
  • int getInt(String Label) throws SQLException //获得当前行Label列的int值
  • double getDouble(int Index) throws SQLException //获得当前行第N列的double值
  • double getDouble(String Label) throws SQLException //获得当前行Label列的double值
  • String getString(int Index) throws SQLException //获得当前行第N列的String值
  • String getString(String Label) throws SQLException //获得当前行Label列的String值

注意:列的编号从1开始。

2.3综合案例

package com.qf.www.test;

import java.sql.*;

public class JobsQuery {
    public static void main(String[] args) {
            //1.加载驱动
            Class.forName("com.mysql.jdbc.Driver");

            //2.获取数据库连接对象
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/product", "root", "1234");
      
            //3.获取发送 sql 语句对象
            Statement statement = connection.createStatement();

            //4.执行 SQL 语句并接收结果集
            ResultSet resultSet = statement.executeQuery("select  * from t_jobs");
            //5 处理结果集
            while(resultSet.next()){
                //5.1有数据,依据列名获取数据
                String job_id = resultSet.getString("job_id");
                String job_title = resultSet.getString("job_title");
                int min_salary = resultSet.getInt("min_salary");
                int max_salary = resultSet.getInt("max_salary");
                System.out.println(job_id+"\t"+job_title+"\t"+min_salary+"\t"+max_salary);
            }
       
                //6.释放资源
               rs.close();
      				 statement.close();
      				 connection.close();
        }
    }
    }
}

四、 常见错误

原因:可能输入的值的类型不对,确定是否插入的元素时对应的值的类型正确

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值