JDBC小结

时间:2022-08-10
本文章向大家介绍JDBC小结,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

JDBC简介

  • JDBC 全称为Java DataBase Connectivity(Java语言连接数据库)
  • JDBC是SUN公司制定的一套接口(interface)。

    接口都有调用者和实现者。

    面向接口调用、面向接口写实现类,这都属于面向接口编程

  • JDBC之所以要面向接口编程,是因为解耦合:降低程序的耦合度,提高程序的扩展力。多态机制就是非常典型的:面向抽象编程。(不要面向具体编程)
  • 因为每一个数据库产品都有自己独特的实现原理,所以不同数据库产品之间需要一个类似桥梁的JDBC接口用来实现操作数据库
  • JDBC编程六步
  1. 注册驱动(告诉Java程序,即将连接的是哪个品牌的数据库)
  2. 获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,使用完后记得关闭通道)
  3. 获取数据库操作对象(专门执行sql语句的对象)
  4. 执行SQL语句(DQL,DML…)
  5. 处理查询结果集 (只有当第四步执行的是select语句的时候,才有本步)
  6. 释放资源(使用完资源后一定要关闭资源,Java和数据库之间属于进程间的通信,开启之后一定要记得关闭)

 

IDEA编写JDBC连接MySQL

mysql-connector-java的不同版本对比

MySQL Connector / J 5.1 5.1版本支持java5及其以上的版本,支持5.6、5.7、8.0版本的mysql数据库,支持3.0、4.0、4.1、4.2版本的jdbc。在5.1中,Driver的实现类的全路径名是com.mysql.jdbc.Driver。

MySQL Connector / J 8.0 8.0版本支持java8及其以上的版本,支持5.6、5.7、8.0版本的mysql数据库,支持4.2版本的jdbc。在8.0中,Driver的实现类的全路径名是com.mysql.cj.jdbc.Driver。

下图是官网上mysql-connector-java的版本对应的mysql版本和jdk的版本。

下载驱动jar包 mysql-connector-java

要使用mysql连接器,就要先下载它。如果是一般的项目,那我们需要下载jar包,然后放到项目的lib目录下。如果使用maven构建的项目,我们可以通过maven直接安装。不同的下载方式有不同的操作,常见的有直接官网下载和maven下载(下周讲解maven)。 下载jar包最直接的方式是从官网下载,官网地址是:https://dev.mysql.com/downloads/connector/j/。直接点链接进入mysql官网,选择所需的版本和操作系统(要下载jar包就要选:Platform Independent),然后点击download按钮就可以下载了。为java提供的连接器是Connector / J,也就是mysql-connector-java,它分为5.1版本和8.0版本。Connector / J实现了JDBC,为使用java开发的程序提供连接,方便java程序操作数据库。

2、从maven安装 使用maven安装mysql-connector-java就简单很多,直接打开maven的中央仓库地址,输入mysql-connector-java就可以找到不同版本的依赖。地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java

6.3 IDEA导入jar包

先检查jar包位置:在目录里新建一个文件夹 libs,把jar包复制进去

然后右键选择新建文件夹libs转成library

然后就可以写代码啦!

根据六步编写代码:先不写处理代码

 

6.4 JDBC连接mysql 程序编写

6.5.1 第一种注册驱动方式
package com.shujia.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

import com.mysql.jdbc.Driver;

/*
       1.注册驱动(告诉Java程序,即将连接的是哪个品牌的数据库)
       2.获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,使用完后记得关闭通道)。
       3.获取数据库操作对象(专门执行sql语句的对象)
       4.执行SQL语句(DQL,DML…)
       5.处理查询结果集 (只有当第四步执行的是select语句的时候,才有本步)
       6.释放资源(使用完资源后一定要关闭资源,Java和数据库之间属于进程间的通信,开启之后一定要记得关闭)


       工具类:DriverManager
          没有构造方法(构造方法私有化),方法是静态的。
*/
public class JDBCTest1 {
   private static Statement stat;
   private static Connection conn;


   public static void main(String[] args) {
       //1.注册驱动(告诉Java程序,即将连接的是哪个品牌的数据库)
       //第一种注册驱动的方式
       //jdk自己提供了一个工具类DriverManager给我们使用,其中有一个静态的方法registerDriver()可以实现注册驱动功能
       //static void registerDriver(Driver driver)
       //注册与给定的驱动程序 DriverManager 。
       //而jdkapi文档中发现,Driver是一个接口,而接口是不能直接实例化的
       //这里要想传入一个Driver的对象,就必须找到一个对应的实现类
       //我们现在是要使用mysql的驱动,所以就猜测mysql的驱动包中应该有一个类实现了jdk提供的Driver接口
       try {
           DriverManager.registerDriver(new Driver());
           //2.获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,使用完后记得关闭通道)。
           //jdk自身提供的工具类DriverManager中有一个静态方法,可以让我们调用并且获取与数据库的连接
           //static Connection getConnection(String url, String user, String password)
           //尝试建立与给定数据库URL的连接。
           /**
            *     url: 统一资源定位系统
            *         http/https: 通过网络请求去访问网络上的资源
            *         jdbc:mysql: 是驱动提供的请求头
            *         请求的地址: 指定mysql的服务器地址:192.168.254.150
            *         端口号: 3306
            *         useUnicode=true&characterCharset=utf8
            *
            *     jdbc:mysql://192.168.254.150:3306?useUnicode=true&characterCharset=utf8
            *
            *     user: 用户名 root
            *     password: 密码 123456
            */
           //在mysql5.7+版本不建议使用连接直接访问服务器
           String url = "jdbc:mysql://192.168.254.150:3306/bigdata19?useUnicode=true&characterEncoding=utf8&useSSL=false";
           String user = "root";
           String password = "123456";
           conn = DriverManager.getConnection(url, user, password);
           System.out.println("与mysql建立连接成功:"+conn); //com.mysql.jdbc.JDBC4Connection@7d9d1a19

           //3.获取数据库操作对象(专门执行sql语句的对象)
           stat = conn.createStatement();

           //4.执行SQL语句(DQL,DML…)
           //DQL
           //ResultSet executeQuery(String sql)
           //执行给定的SQL语句,该语句返回单个 ResultSet对象。

           //DML
           //int executeUpdate(String sql)
           //执行给定的SQL语句,这可能是 INSERT , UPDATE ,或 DELETE语句,或者不返回任何内容,如SQL DDL语句的SQL语句。
           // 方法的返回值指的是受影响的行数: Affected rows: 1
           int count = stat.executeUpdate("insert into dept(deptno,dname,loc) values(70,'教学部','安徽合肥')");
           if(count==1){
               System.out.println("数据保存成功!!");
          }else {
               System.out.println("数据保存失败!!");
          }
      } catch (SQLException e) {
           e.printStackTrace();
      }finally {
           //释放资源的代码
           if(stat!=

原文地址:https://www.cnblogs.com/slm-1314521/p/16573714.html