IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> JDBC-- 基础理解&&数据库连接 -> 正文阅读

[大数据]JDBC-- 基础理解&&数据库连接

1、概念

  • JDBC(Java Database Connectivity)是一种用于执行SQL语句的JavaAPI,可以为多种关系型数据库提供统一访问,他是由一组用Java语言编写的类和接口组成。

2、本质

  • java官方提供的一套规范,用于帮助开发人员快速实现不同关系型数据的连接。
    实际上就是SUN公司为了满足程序员便利,提供了很多供程序员使用来操作数据库的接口,而这些接口的具体实现则在每个数据库公司去单独实现。使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。

如果没有JDBC,java程序调用数据库需要实现每个数据库的不同方法。
在这里插入图片描述
采用JDBC后:
在这里插入图片描述

3、入门程序流程

  1. 导入jar包
  2. 注册驱动 (告诉java程序,即将连接的是哪个品牌的数据库)
  3. 获取数据库连接 (表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级,使用完之后一定要关闭)
  4. 获取执行者对象 (专门执行sql语句的对象)
  5. 执行sql语句并返回结果
  6. 处理结果 (只有上一步执行的是select语句,才会处理数据)
  7. 释放资源 (java和数据库是进程间的通信)

4、连接

4.1 注册驱动

由 Driver接口实现:

  • java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现。

  • 在程序中不需要直接去访问实现了 Driver 接口的类,而是由驱动程序管理器类(java.sql.DriverManager)去调用这些Driver实现。

    • Oracle的驱动:oracle.jdbc.driver.OracleDriver

    • mySql的驱动: com.mysql.jdbc.Driver

具体代码实现:

下面这段代码写在了 Driver类的静态代码块中了,只需要让类加载即可以执行静态代码块,因此可以通过反射机制进行类的加载,即上面代码。 不需要返回值,只需要他的类加载动作。

//通过创建数据库驱动来实现Driver
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//通过反射机制加载类实现静态代码段
//Class.forName("com.mysql.cj.jdbc.Driver");
4.2 URL
  1. url: 统一资源定位符(网络中某个资源的绝对路径)
  2. URL包括: 协议 IP PORT 资源名
  3. http:// 通信协议 182.61.200.7 IP地址 80 端口号 index.html 服务器上的某个资源名

5、代码实现

5.1 实现DML语句(增 删 改)

没有返回结果集,stat调用的是 executeUpdate方法,返回的结果是对数据的进行DML操作的记录条数。count==1则表示对一条数据进行DML操作,返回3则是处理记录条数为3。

package com.java;

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

public class JdbcDemo {
    public static void main(String[] args) throws Exception {

        //1.导入jar包
        //2.注册驱动
        //Class.forName("com.mysql.cj.jdbc.Driver");
        //下面这段代码写在了 Driver类的静态代码块中了,只需要让类加载即可以执行静态代码块,因此可以通过反射机制
        //进行类的加载,即上面代码。 不需要返回值,只需要他的类加载动作。
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        //3.获取连接
        /*
         jdbc:mysql:// 协议
         127.0.0.1  localhost都是本机ip地址
         3306 mysql数据库端口号
         atguigudb 数据库名
         */
       Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/mytest1","root","root");
        //4.获取执行者对象 (数据库操作对象)
        Statement stat = con.createStatement();
        //5.执行sql语句
        String sql = "insert into user(id,name,age) values (20,'aaa',20)";
       // ResultSet rs=stat.executeQuery(sql);
        //处理结果
        int count = stat.executeUpdate(sql);
        if(count==1){
            System.out.println("保存成功");
        }

        stat.close();
        con.close();
    }
}

5.2 实现DQL语句 (查询语句)

执行的是 executeQuery方法,返回的是处理集,然后对处理集进行遍历,则可以列出数据。

package com.java;

import java.sql.*;

public class Jdbcselect {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stat = null;
        ResultSet rs = null;

        try {
         Class.forName("com.mysql.cj.jdbc.Driver");

         conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mytest1","root","root");

         stat = conn.createStatement();

         String sql = "select * from user";

         rs = stat.executeQuery(sql);

         while (rs.next()){
             //getString方法就是将获取到的数据全部转换为String类型
             //当然还有其他类型 getInt getDouble ==》可以直接对结果进行数据操作
             //通过列号获取不健壮
//             String id = rs.getString(1);//根据列号开始获取数据,JDBC列号从1开始
//             String name = rs.getString(2);
//             String age = rs.getString(3);
             //通过列名称获取数据,列名称是查询结果集的列名称
             String id = rs.getString("id");//
             String name = rs.getString("name");
             String age = rs.getString("age");
             System.out.println(id+" "+name+" "+age);
         }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //释放资源
            if(rs!=null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(stat!=null) {
                try {
                    stat.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn!=null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

        }
    }
}

5.3 优质方法—配置文集存放字符串

在对应的src下创建一个配置文件jdbc.properties其中的内容如下:


className=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mytest1
user=root
password=root

使用配置文件的好处:

  1. 实现了代码和数据的分离,如果需要修改配置信息,直接在配置文件中修改,不需要深入代码 ,解耦。
  2. 如果修改了配置信息,省去重新编译的过程。
  3. 编写的java程序在部署到服务器上时,需要打包。如果java代码修改过,就需要重新打包。使用配置文件的方式,如果配置信息修改,并没有导致代码的修改。所以不需要重写打包。
      Properties properties = new Properties();
        //加载资源的路径:默认为src下
        InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
        properties.load(is);
 
        String className = properties.getProperty("className");
        String url = properties.getProperty("url");
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
 
        //加载驱动
        Class.forName(className);
 
        //获取连接
        Connection connection = DriverManager.getConnection(url, user, password);
 
 
        System.out.println(connection);
    }

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-05 21:48:17  更:2022-02-05 21:48:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 14:03:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码