当前位置: 首页 > news >正文

Java——JDBC(Java DataBase Connectivity)数据库连接技术

目录

1、什么是JDBC?

2、JDBC的本质

3、JDBC入门案例

3.1、前期准备

3.2、mysql数据库准备

3.3、测试类代码


 

1、什么是JDBC?

通过Java语言操作数据库,操作表中的数据。

SUN公司为了简化、统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC。

2、JDBC的本质

是官方(sun公司)定义的一套操作所有关系型数据库的规则(接口)。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,运行时的代码其实是驱动jar包中的实现类。

在Java中要想访问数据库只能通过JDBC,JDBC是Java访问数据库的基础,其他数据库访问技术都是对JDBC的封装(Hibernate,MyBatis),JDBC是为了访问不同的数据库,提供了一种统一的访问方式,JDBC本身是Java连接数据库的一个标准,是进行数据库连接的抽象层。由Java编写的一组类和接口,接口的实现由各大数据库厂商来实现。

3、JDBC入门案例

3.1、前期准备

 为了能够测试JDBC,这里利用junit进行测试,首先创建一个JavaWeb项目,在项目src包下创建一个测试类UserTest,并导入mysql-connector的jar包,这就是JDBC的核心jar包,没有它是不能调用其中的类方法的,jar包放到WEB-INF下的lib包内。

这里提供了mysql5版本和mysql8版本的jar包,对应的就是mysql的版本,如果是mysql5系列版本的就用5.16的jar包,如果是mysql8系列的版本就用8.0.16版本jar包。

链接:https://pan.baidu.com/s/1loxaN41BXlfdePT_8DDBDw 
提取码:388i

添加到lib包下的jar包需要手动去导入一下右键jar包,点击ADD Library

3.2、mysql数据库准备

创建一个t_user表,自行添加数据

CREATE TABLE `t_user` (
  `id` int(11) NOT NULL,
  `username` varchar(20) DEFAULT NULL,
  `password` varchar(20) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

这里是我添加的数据 

3.3、测试类代码

前期工作准备就绪后,就开始连接数据库,编写代码了,下面就演示一下CRUD操作

public class UserTest {
    @Test
    public void select_User() throws ClassNotFoundException, SQLException {
        //加载mysql数据库JDBC驱动
        Class.forName("com.mysql.jdbc.Driver");
        //后面test是我t_user存放的数据库名
        String url="jdbc:mysql://localhost:3306/test";
        //数据库账户
        String username="xxx";
        //数据库密码
        String password="xxx";
        //获取connection对象
        Connection con = DriverManager.getConnection(url, username, password);
        //创建statement对象
        Statement statement = con.createStatement();
        //查询语句得到一个ResultSet类型的结果集
        ResultSet resultSet = statement.executeQuery("select * from t_user");
        //遍历结果集  输出控制台 next()方法如果有结果就返回true
        while (resultSet.next()){
            int id = resultSet.getInt("id");
            String username1 = resultSet.getString("username");
            String password1 = resultSet.getString("password");
            int age = resultSet.getInt("age");
            System.out.println(id+" "+username1+" "+password1+" "+age);
        }


    }
    @Test
    public void add_User() throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");
        String url="jdbc:mysql://localhost:3306/test";
        String username="xxx";
        String password="xxx";
        //获取connection对象
        Connection con = DriverManager.getConnection(url, username, password);
        //创建statement对象
        Statement statement = con.createStatement();
        //返回int 类型 代表的是修改的条数  executeUpdate可以为insert、delete、update操作
        int i = statement.executeUpdate("insert into t_user value(6,'王五','wda4822',26)");
        System.out.println(i);
    }
    @Test
    public void delete_User() throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");
        String url="jdbc:mysql://localhost:3306/test";
        String username="xxx";
        String password="xxx";
        //获取connection对象
        Connection con = DriverManager.getConnection(url, username, password);
        //创建statement对象
        Statement statement = con.createStatement();
        int i = statement.executeUpdate("delete from t_user where id=6");
        System.out.println(i);
    }
    @Test
    public void update_User() throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");
        String url="jdbc:mysql://localhost:3306/test";
        String username="xxx";
        String password="xxx";
        //获取connection对象
        Connection con = DriverManager.getConnection(url, username, password);
        //创建statement对象
        Statement statement = con.createStatement();
        int i = statement.executeUpdate("update t_user set username='宋浩',password='555sss4',age=24 where id=5 ");
        System.out.println(i);
    }

}

相关文章:

  • Express
  • java学习之springcloud之服务调用+服务降级+服务网关篇
  • 常见的设计模式
  • 【我不熟悉的javascript】02. 使用token和refreshToken的管理用户登录状态
  • 备战秋招涵盖二十九大技术栈Java面试最新八股文来袭
  • tensorflow张量运算
  • 论文阅读笔记StyTr2: Image Style Transfer with Transformers
  • mybatis面试题及回答
  • 奔腾电力面试题
  • 【leetcode】905. 按奇偶排序数组 (简单)
  • Java--MybatisPlus入门;与Mybatis区别;简单使用(一)
  • #ubuntu# #git# repository git config --global --add safe.directory
  • 【数据结构】——二叉树oj题详解
  • 性能测试:工具篇:Jmeter实时可视化平台搭建
  • 你该用什么的美剧学英语?
  • [LeetCode] Wiggle Sort
  • bearychat的java client
  • centos安装java运行环境jdk+tomcat
  • iOS小技巧之UIImagePickerController实现头像选择
  • javascript面向对象之创建对象
  • JDK9: 集成 Jshell 和 Maven 项目.
  • mysql外键的使用
  • PHP 的 SAPI 是个什么东西
  • Sass Day-01
  • scala基础语法(二)
  • 离散点最小(凸)包围边界查找
  • 爬虫模拟登陆 SegmentFault
  • 前端代码风格自动化系列(二)之Commitlint
  • 思否第一天
  • 算法-插入排序
  • 微信小程序实战练习(仿五洲到家微信版)
  • 线性表及其算法(java实现)
  • 怎么将电脑中的声音录制成WAV格式
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​ssh免密码登录设置及问题总结
  • #微信小程序:微信小程序常见的配置传值
  • #预处理和函数的对比以及条件编译
  • (LeetCode C++)盛最多水的容器
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (八)c52学习之旅-中断实验
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (算法)Travel Information Center
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .net 7 上传文件踩坑