JDBC简介及快速入门-黑马(P1)

news2024/11/26 2:34:16

黑马视频b站链接:

01-JDBC简介&快速入门_哔哩哔哩_bilibili

🐶一、JDBC 简介

JDBC 概念:

  • JDBC 就是使用 Java 语言操作关系型数据库的一套 API。

  • 全称(Java DataBase Connectivity) Java 数据库连接

JDBC 本质:

  • 官方(sun 公司)定义的一套操作所有关系型数据库的规则,即接口

  • 各个数据库厂商去实现这套接口,提供数据库驱动 jar 包

  • 我们可以使用这套接口(Jdbc)编程,真正执行的代码是驱动 jar 包中的实现类

  • 组成包:java.sql。*;javax.sql.*;这两个包都包含在了 JDK 中。

JDBC 好处:

各数据库厂商使用相同的接口,Java 代码不需要针对不同数据库分别开发

可随时替换底层数据库,访问数据库的 Java 代码基本不变。

🐶二、Idea 导入 Mysql8.0 驱动 jar 包

Idea 导入Mysql8.0驱动jar包-CSDN博客

🐶三、开发步骤

0. 创建一个 java 项目,导入 mysql 的数据库驱动 jar 包--驱动包

1. 注册驱动

//方法1-创建mysql的驱动对象
DriverManager.registerDriver(new Driver());


//方法2-1. 注册驱动
Class.forName("com.mysql.jdbc.Driver");

2. 获取与数据库的链接

要创建一个数据库连接,您需要提供以下连接信息:

  • JDBC URL:用于标识数据库的地址,包括数据库的类型、主机名、端口号(如下示例端口号为 3306)和数据库名称(如下示例数据库名称为 doit46_day01)。JDBC URL 的格式因数据库而异,例如 MySQL 和 Oracle 的 JDBC URL 格式不同。

  • 用户名:连接数据库时使用的用户名。

  • 密码:连接数据库时使用的密码。

//使用驱动管理器,链接mysql
String url="jdbc:mysql://localhost:3306/doit46_day01?characterEncoding=utf-8&serverTimezone=Asia/Shanghai";
String username="root";
String password="123456";
Connection conn= DriverManager.getConnection(url,username,password);

3. 定义 SQL 语句

String sql="insert into student values(7,'zs',703)";

4. 得到代表发送和执行 SQL 语句的对象 Statement

//可以使用链接对象,向mysql中传递sql语句
//传递sql语句有一个专门的对象来进行传递。
Statement state=conn.createStatement();

5. 执行语句

//开始执行sql
//返回值是该条sal影响了多少行数据
int num=state.executeUpdate(sql);
if(num!=0){
    System.out.println("添加成功");
}else{
    System.out.println("添加失败");
}

6. 如果执行的是查询语句,就会有结果集,处理

String sql="select * from Student";

Statement statement=connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()){
    int id=resultSet.getInt("sid");
    String name=resultSet.getString("sname");
    String rid=resultSet.getString("rid");
    System.out.println(id+"---"+name+"---"+rid);
}

7. 释放占用的资源

state.close();
conn.close();

Student 数据库

🧀代码实例1:

package test;

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

public class testDemo06 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //1. 注册驱动
        Class.forName("com.mysql.jdbc.Driver");

        //使用驱动管理器,链接mysql
        String url="jdbc:mysql://localhost:3306/doit46_day01?characterEncoding=utf-8&serverTimezone=Asia/Shanghai";
        String username="root";
        String password="123456";
        Connection conn= DriverManager.getConnection(url,username,password);
        //可以使用链接对象,向mysql中传递sql语句
        //传递sql语句有一个专门的对象来进行传递。
        Statement state=conn.createStatement();
        String sql="insert into student values(8,'zs',703)";

        //开始执行sql
        //返回值是该条sal影响了多少行数据
        int num=state.executeUpdate(sql);
        if(num!=0){
            System.out.println("添加成功");
        }else{
            System.out.println("添加失败");
        }

        state.close();
        conn.close();
    }
}

结果:

🧀实例代码2:

package test;

import com.mysql.jdbc.Driver;

import java.sql.*;

public class TestDemo07 {
    public static void main(String[] args) throws SQLException {
        DriverManager.registerDriver(new Driver());
        String url="jdbc:mysql://localhost:3306/doit46_day01?characterEncoding=utf-8&serverTimezone=Asia/Shanghai";
        String username="root";
        String password="123456";
        Connection connection = DriverManager.getConnection(url, username, password);
        String sql="select * from Student";

        Statement statement=connection.createStatement();
        ResultSet resultSet = statement.executeQuery(sql);
        while (resultSet.next()){
            int id=resultSet.getInt("sid");
            String name=resultSet.getString("sname");
            String rid=resultSet.getString("rid");
            System.out.println(id+"---"+name+"---"+rid);
        }
        
        connection.close();
        statement.close();
    }
}

结果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1287477.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

佳易王会员管理软件店铺积分以及积分兑换系统

一、佳易王会员管理软件大众版 部分功能简介: 1、会员信息登记 :可以直接使用手机号登记,也可以使用实体卡片,推荐用手机号即可。 2、会员卡类型 :可以自由设置卡的类型,比如:充值卡、计次卡、…

使用Docker在Debian上构建GRBL模拟器镜像:简明步骤和操作指南

概述编译编写 Dockerfile构建镜像运行测试其他 概述 本文将详细介绍如何在Debian系统上通过Docker构建GRBL模拟器镜像,以便进行数控机床的仿真测试。GRBL是一种开源的控制系统,用于控制三轴CNC机床、激光雕刻、激光切割,而在Docker容器中运…

力扣第374场周赛题解

这一场周赛的题目是比较难的一次,写了1个多小时就写了两个题目。 首先第一题: 纯水题,遍历然后进行一下判断就可以解决了。这边就不放代码了。 第二题: 这个题目,我觉得难度非常大,其实代码量也不大都是很…

二维码智慧门牌管理系统升级:强化信息安全的防伪技术

文章目录 前言一、解决方案概览二、具体措施 前言 随着二维码智慧门牌管理系统在城市管理、企业形象展示和商铺门店等领域的广泛应用,信息安全问题愈发凸显。如何保障二维码门牌信息的安全性成为当前迫切需要解决的难题。 一、解决方案概览 专码专用:每…

每日3道PWN(第二天)

ciscn_2019_n_1 参考: [BUUCTF-pwn]——ciscn_2019_n_1-CSDN博客 [BUUCTF]PWN5——ciscn_2019_n_1_ciscn_2019_n_4-CSDN博客 BUUCTF—ciscn_2019_n_1 1-CSDN博客 checksec一下 64位栈溢出 按f5查看main函数,双击可疑函数 发现含有命令执行的且发现fl…

不愧是字节出来的,真的太厉害了。。。

前段时间公司缺人,也面了许多测试,一开始瞄准的就是中级水准,当然也没指望能来大牛,提供的薪资在15-20k这个范围,来面试的人有很多,但是平均水平真的让人很失望。看了简历很多上面都是写有4年工作经验&…

反三角函数基本性质和函数图形

文章目录 反三角函数反三角函数图形利用反函数的性质绘制反三角图形反三角函数的定义域&值域反三角函数的恒等式推导 反三角函数 反三角函数 (wikipedia.org) 反三角函数图形 sin ⁡ ( x ) , arcsin ⁡ ( x ) \sin(x),\arcsin(x) sin(x),arcsin(x) cos ⁡ ( x ) , arccos …

2022年11月10日 Go生态洞察:十三年的Go之旅

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

11、信息打点——红队工具篇FofaQuakeSuize水泽Arl灯塔

网络空间测绘引擎 Fofa Quake shodan Zoomeye 主要搜关联资产、特征资产、资产信息(在测绘引擎上直接搜IP,它会显示所有与该域名有关的信息。) fofa和Quake测绘引擎集成化工具:Finger 自动化信息收集项目 ARL灯塔 Suize水泽 …

微信如何批量发送朋友圈?

批量发送朋友圈 发朋友圈 支持发送图片或者图文,可选择多个在线微信一起发,可立即发送,也可定时发送; 1、点击【发朋友圈】,选择要发圈的微信号和朋友圈类型(立即/定时),编辑设置好…

python精细讲解,从代码出发,适合新手宝宝食用的python入门教学【持续更新中】

文章目录 1、输入输出1.1 输入语句1.2 输出语句 2、List列表操作2.1 取值取单个元素:[]取出现的第一个元素:index 2.2 添加操作追加:append插入:insert 2.3 删除操作removepopdelclear清空 copy复制操作列表相关的数学操作数数&am…

类和对象——(7)this指针

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 人生就像骑单车,想保持平衡…

vmware ubuntu22 安装vmtools并设置共享文件夹

我是你爹,再不会就紫砂。 权限不够或没读写权限自己改下就行。 1. 主机下新建文件夹,并如下图设置成共享 2. 把上面文件夹路径添加到共享文件夹里面 3. 开启ubuntu,在登陆界面显示之前我们会看到下图的重新安装vmware tools由灰变黑&#x…

C语言--每日选择题--Day36

第一题 1. 以下关于指针的说法,正确的是() A:int *const p 与 int const *p等价 B:const int *p 与 int *const p等价 C:const int *p 与 int const *p 等价 D:int *p[10] 与 int (*p)[10] 等价 答案及解析 C const 在*的左侧&…

坚鹏:中国工商银行内蒙古分行数字化转型发展现状与成功案例培训

中国工商银行围绕“数字生态、数字资产、数字技术、数字基建、数字基因”五维布局,深入推进数字化转型,加快形成体系化、生态化实施路径,促进科技与业务加速融合,以“数字工行”建设推动“GBC”(政务、企业、个人&…

人工智能学习6(贝叶斯实现简单的评论情感分析)

编译工具PyCharm 文章目录 编译工具PyCharm 文本分析与表示实现方式:文本表示方法文本相似度计算LDA主题模型 朴素贝叶斯算法应用:评论情感分析,工具评论分析是好评还是差评获取数据加载停用词内容标准化(将每一句话划分成一个个的…

语义分割网络-FCN全卷积网络

全卷积神经网络FCN整体概述 FCN是首个端对端针对像素级预测的全卷积网络。FCN会用到分类网络作为backbone FCN的网络结构类比分类网络 分类网络经过卷积操作后,接全连接层,最后一个全连接层输出长度与分类类别数量相同,最后经过softmax得到术…

【机器视觉技术栈】03 - 镜头

镜头 定焦镜头变焦镜头远心镜头 FA镜头与远心镜头的区别? 焦距越小畸变程度越大,精度要求不高的场景可以使用焦距大的FA镜头做尺寸测量,但焦距越大带来的问题就是整个机械设备越大。精度高的场景使用远心镜头进行尺寸测量。 光学基础知识…

flex 布局防止元素被挤换行

刚开始是这样的代码&#xff1a; <div class"flex"><span>选择模型&#xff1a;</span><n-select :options"state.chatModelOptions" /> </div>选择模型换行了…不行&#xff0c;这个效果不行&#xff0c;修改后&#xff1…

深度学习——第3章 Python程序设计语言(3.4 Python自定义函数)

3.4 Python自定义函数 目录 1. 函数基础知识 2. 函数的定义&#xff08;声明&#xff09;和调用 3. 函数参数传递 4. 函数的返回值 5. lambda函数 随着学习的日渐深入&#xff0c;编写的代码将会越来越复杂&#xff0c;所以我们需要找一种方法对这些复杂的代码进行分解、重…