Java学习-JDBC(一)

news2024/11/15 16:19:53

JDBC

概念
  • JDBC(Java Database Connectivity)Java数据库连接
  • JDBC提供了一组独立于任何数据库管理系统的API
  • Java提供接口规范,由各个数据库厂商提供接口的实现,厂商提供的实现类封装成jar文件,也就是我们俗称的数据库驱动jar包
  • JDBC充分体现了面向接口编程的好处,程序员只关心标准和规范,无需关注实现过程
    在这里插入图片描述
核心组成
接口规范
  • 为了项目代码的可移植性,可维护性,SUN公司制订了Java程序连接数据库的统一接口规范,不管连接哪种DBMS软件,Java代码可以保持一致
  • 接口存储在java.sql和javax.sql包下
实现规范
  • 各个数据库厂商DBMS各不相同,各自内部如何通过SQL实现增、删、改、查等操作管理数据,厂商最清楚,接口规范的实现由各个数据库厂商自己实现
  • 厂商将实现内容和过程封装成jar文件,程序员只需在项目中引入jar文件,就可以进行开发了
搭建环境
  • ①准备数据库

//创建数据库和表
create database jdbc;
use jdbc;
create table t_emp(emp_id int auto_increment comment ‘员工编号’ primary key,
emp_name varchar(100)not null comment’员工姓名’,
emp_salary double(10,5) not null comment’员工薪资’,
emp_age int not null comment ‘员工年龄’);
insert into t_emp(emp_name,emp_salary,emp_age) values(‘edison’,777.77,23),(‘dizzy’,888.88,24),(‘tye’,999.99,25),(‘water’,333.33,27);

```bash
mysql> use jdbc
Database changed
mysql> show tables;
+----------------+
| Tables_in_jdbc |
+----------------+
| t_emp          |
+----------------+
1 row in set (0.00 sec)

mysql> select * from t_emp
    -> ;
+--------+----------+------------+---------+
| emp_id | emp_name | emp_salary | emp_age |
+--------+----------+------------+---------+
|      1 | edison   |  777.77000 |      23 |
|      2 | dizzy    |  888.88000 |      24 |
|      3 | tye      |  999.99000 |      25 |
|      4 | water    |  333.33000 |      27 |
+--------+----------+------------+---------+
4 rows in set (0.00 sec)

  • ②根据安装数据库版本官方下载驱动jar包
  • ③创建Java项目,在项目下创建lib文件夹,将下载的驱动复制到lib文件夹
  • ④选中lib文件夹,右键->Add as Libary,与项目集成
    在这里插入图片描述
    在这里插入图片描述
  • ⑤编写代码
package com.lotus.base;

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

/**
 * 基础测试代码
 */
public class JDBCQuick {
    public static void main(String[] args) throws Exception {
        //1.注册驱动
         Class.forName("com.mysql.cj.jdbc.Driver");
        //2.获取连接对象
        String url = "jdbc:mysql://192.168.29.201:3306/jdbc";
        String username = "root";
        String password = "Lotus!1120";
        Connection conn = DriverManager.getConnection(url,username,password);
        //3.获取执行SQL语句对象
        Statement statement = conn.createStatement();
        //4.编写SQL语句并执行,接收返回结果集
        String statement_sql = "select * from jdbc.t_emp";
        ResultSet rs = statement.executeQuery(statement_sql);
        //5.处理结果,遍历
        while (rs.next()) {
            int emp_id = rs.getInt("emp_id");
            String emp_name = rs.getString("emp_name");
            double emp_salary = rs.getDouble("emp_salary");
            int emp_age = rs.getInt("emp_age");
            System.out.println(emp_id + "\t" + emp_name + "\t" + emp_salary + "\t" + emp_age);
        }

        //6.释放资源
        rs.close();
        statement.close();
        conn.close();
    }
}
//执行结果
1	edison	777.77	23
2	dizzy	888.88	24
3	tye	999.99	25
4	water	333.33	27

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

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

相关文章

IP SSL使用率增长有利于网络安全防护!

目录 IP的特殊性 IP证书的作用原理: 申请IP证书的基本条件: 申请IP SSL证书: 对于SSL证书来说,很多朋友应该并不陌生,目前SSL证书广泛应用在域名服务器上,所以大家最熟悉的证书类型可能就是单域名SSL证…

element-plus 的icon 图标的使用

element-plus的icon 已经独立出来了,需要单独安装 1. npm安装 icon包 npm install element-plus/icons-vue2.注册到全局组件中 同时注册到全局组件中,或者按需单独引入,这里只介绍全局引入。 import { createApp } from vue import { cre…

(UE4.26)UE4的FArchive序列化入门

前言 序列化(Serialize)和反序列化(UnSerialize)是程序领域常见的概念。对于这两个词汇我理解的是 序列化(Serialize): 变量值(int, float, string等基本类型, 或者Array,Map,或者更复杂的复合体)存储为一个文件(二进制流, 二进制文件, json, xml等格式…

使用 PAI-DSW x Free Prompt Editing图像编辑算法,开发个人AIGC绘图小助理

教程简述 在本教程中,您将学习在阿里云交互式建模平台PAI-DSW x Free Prompt Editing(CVPR2024中选论文算法)图像编辑算法,开发个人AIGC绘图小助理,实现文本驱动的图像编辑功能单卡即可完成AIGC图片风格变化、背景变化…

277 基于MATLAB GUI火灾检测系统

基于MATLAB GUI火灾检测系统,可以实现图片和视频的火苗检测。火焰识别的三个特征:1个颜色特征,2个几何特征颜色特征:HSV颜色空间下,对三个通道值进行阈值滤波,几何特征1:长宽比,几何…

k8s——pod控制器

一、pod控制器定义 Pod控制器,又称之为工作负载(workload),是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试进行重启,当根据重启策略无效&#xf…

NIST 电子病历中的疾病列表部分的认证

美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)对电子病历的认证 分几个阶段,每个阶段又分门诊和住院,然后又分若干模块。下面是疾病列表的测试脚本。 170.302c_Problemlist Test …

(一)大数据基础练习题(66道选择题)

本文整理了大数据基础知识相关的练习题,共66道,适用于想巩固大数据基础的同学。来源:如荷学数据科学题库(技术专项-大数据)。 1) 2) 3) 4) 5) 6)…

高考分数查询结果自动推送至微信

又是一年高考时,祝各位学子金榜题名,天遂人愿! 在您阅读以下内容时,请注意:各省查分API接口可能不相同,本人仅就技术层面谈谈, 纯属无聊,因为实用意义不大,毕竟一年一次,…

【机器学习】XGBoost: 强化学习与梯度提升的杰作

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 XGBoost: 强化学习与梯度提升的杰作引言1. XGBoost概览1.1 什么是XGBoost&#…

27 ssh+scp+nfs+yum进阶

ssh远程管理 ssh是一种安全通道协议,用来实现字符界面的远程登录。远程复制,远程文本传输。 ssh对通信双方的数据进行了加密。 用户名和密码登录 密钥对认证方式(可以实现免密登录) ssh 22 网络层 传输层 数据传输的过程中是…

【PL理论】(8) F#:列表高阶函数之 filter 函数 | 内联谓词函数 | 链式操作:先过滤再映射

💭 写在前面:上一章中,我们详细讲解了列表的合并,本章我们来详细讲解一下列表的过滤,在 F# 中,过滤列表是指从列表中提取满足某个条件的元素,形成一个新的列表。这个操作通常使用 List.filter 函…

第R3周:天气预测

🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 | 接辅导、项目定制 🚀 文章来源:K同学的学习圈子 目录 我的环境 语言环境:python3.8.18编译器:jupyter not…

用HTML实现拓扑面,动态4D圆环面,可手动调节,富有创新性的案例。(有源代码)

文章目录 前言一、示例二、目录结构三、index.html(主页面)四、main.js五、Tour4D.js六、swissgl.js七、dat.gui.min.js八、style.css 前言 如果你觉得对代码进行复制粘贴很麻烦的话,你可以直接将资源下载到本地。无需部署,直接可…

如何利用Varjo混合现实技术改变飞机维修训练方式

自2017年以来,总部位于休斯顿的HTX实验室一直在推进混合现实技术,与美国空军密切合作,通过其EMPACT平台提供可扩展的沉浸式飞机维护虚拟现实培训。 虚拟和混合现实对维修训练的好处: l 实践技能:提供一个非常接近真实场…

独享IP VS 原生IP,二者的区别与定义详解

原生IP:原生IP是指由Internet服务提供商(ISP)直接分配给用户的IP地址,这些IP地址通常反映了用户的实际地理位置和网络连接。原生IP是用户在其所在地区或国家使用的真实IP地址,与用户的物理位置直接相关。在跨境电商中&…

Liunx环境下redis主从集群搭建(保姆级教学)02

Redis在linux下的主从集群配置 本次演示使用三个节点实例一个主节点,两个从节点:7000端口(主),7001端口(从),7002端口(从); 主节点负责写数据&a…

Ghost Mirror

Ghost Mirror 操作系统镜像 windows servers linux Windows XP 老古董,唉 安装完重启一下 设置下BIOS 1小时内弄完3台。。。

【MMU】——页表映射示例

文章目录 页表映射示例一级页表二级页表二级页表的优势页表映射示例 一级页表 上图一级页表中假设以 4KB 物理页为映射单位,一个进程 4GB 的虚拟地址空间需要:4GB/4KB = 1MB 个页表项,每个页表项目占用 4 个字节所以每个一级页表需要 4MB 的存储空间,每个进程需要 4MB 的内…

ARM32开发--GPIO--LED驱动开发

知不足而奋进 望远山而前行 目录 文章目录 前言 目标 内容 需求介绍 现实问题 需求分析 测试案例构建 BSP驱动构建 接口定义 业务实现 总结 前言 前言: 在这个快节奏的开发环境中,面对紧迫的项目截止日期和有限的资源,我们作为软…