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

Java原生JDBC概览

Java原生JDBC概览

一、是什么?

JDBC是Java DataBase Connectivity的缩写,它是Java程序访问数据库的标准接口。

Java代码并不是直接通过TCP连接去访问数据库,而是通过JDBC接口来访问,而JDBC接口则通过JDBC驱动来实现对数据库的访问。

例如访问MySQL,那么必须编写代码操作JDBC接口。注意到JDBC接口是Java标准库自带的,所以可以直接编译。而具体的JDBC驱动是由数据库厂商提供的。MySQL的JDBC驱动由Oracle提供。

访问某个具体的数据库只需要引入该厂商提供的JDBC驱动。这样保证了Java程序编写的是一套数据库访问代码,却可以访问各种不同的数据库,因为他们都提供了标准的JDBC驱动。

二、怎么用?

所谓JDBC驱动,其实就是一个第三方jar包,我们直接添加一个Maven依赖:

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version><scope>runtime</scope>
</dependency>

2.1 连接数据库

首先得先连接到数据库。打开一个Connection时,需要准备URL、用户名和口令。

URL是由数据库厂商指定的格式,MySQL的URL格式是:

jdbc:mysql://<hostname>:<port>/<db>?key1=value1&key2=value2

假设数据库运行在本机localhost,端口使用标准的3306,数据库名称是learnjdbc,那么URL如下:

jdbc:mysql://localhost:3306/learnjdbc?useSSL=false&characterEncoding=utf8

要获取数据库连接,使用如下代码:

// JDBC连接的URL, 不同数据库有不同的格式:
String JDBC_URL = "jdbc:mysql://localhost:3306/test";
String JDBC_USER = "root";
String JDBC_PASSWORD = "password";
// 获取连接:
Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);// TODO: 访问数据库// 关闭连接:
conn.close();

2.2 访问数据库操作

经典的数据库操作CRUD:创建、读取、更新和删除。

(1)创建Sql语句

User login(String name, String pass) {...String sql = "SELECT * FROM user WHERE login=? AND pass=?"; //?是占位符PreparedStatement ps = conn.prepareStatement(sql);ps.setObject(1, name); //索引从1开始ps.setObject(2, pass);...
}

(2)执行Sql语句

ResultSet rs = ps.executeQuery();

(3)获取返回结果

  while (rs.next()) {long id = rs.getLong("id");long grade = rs.getLong("grade");String name = rs.getString("name");String gender = rs.getString("gender");}

完整代码:

try (Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD)) {try (PreparedStatement ps = conn.prepareStatement("SELECT id, grade, name, gender FROM students WHERE gender=? AND grade=?")) {ps.setObject(1, "M"); // 注意:索引从1开始ps.setObject(2, 3);try (ResultSet rs = ps.executeQuery()) {while (rs.next()) {long id = rs.getLong("id");long grade = rs.getLong("grade");String name = rs.getString("name");String gender = rs.getString("gender");}}}
}

相关文章:

Java原生JDBC概览

Java原生JDBC概览 一、是什么&#xff1f; JDBC是Java DataBase Connectivity的缩写&#xff0c;它是Java程序访问数据库的标准接口。 Java代码并不是直接通过TCP连接去访问数据库&#xff0c;而是通过JDBC接口来访问&#xff0c;而JDBC接口则通过JDBC驱动来实现对数据库的访…...

C# 跨线程访问UI组件,serialPort1串口接收数据

在Windows应用程序&#xff08;例如WinForms或WPF&#xff09;中&#xff0c;UI组件&#xff08;如按钮、文本框等&#xff09;都在主线程&#xff08;也称为UI线程&#xff09;上运行。当你在一个非UI线程&#xff08;例如&#xff0c;一个后台线程或者网络请求线程&#xff0…...

D - New Friends(AtCoder Beginner Contest 350)

题目链接: D - New Friends (atcoder.jp) 题目大意: 题目解析: 题目的大致意思: 假如A和B是朋友 B和C也是朋友 那么当A和C不是朋友的时候 可以通过B让A和C也成为朋友 问你增加了多少对的朋友关系 题目分析: 咱们可以从图论去考虑 当这一群是一个连通块 那么这一群点(人) 都…...

【FAQ】HarmonyOS SDK 闭源开放能力 —Account Kit(2)

1.问题描述&#xff1a; 怎么判断登录的华为帐号有变动&#xff1f; 解决方案&#xff1a; 华为帐号登录成功后会返回唯一标识OpenID和UnionID&#xff0c;如果切换不同的华为帐号登录&#xff0c;这个唯一标识会变。 OpenID是华为帐号用户在不同类型的产品的身份ID&#x…...

Web组态可视化编辑器 快速绘制组态图

演示地址&#xff1a;by组态[web组态插件] 随着工业智能制造的发展&#xff0c;工业企业对设备可视化、远程运维的需求日趋强烈&#xff0c;传统的单机版组态软件已经不能满足越来越复杂的控制需求&#xff0c;那么实现Web组态可视化界面成为了主要的技术路径。 行业痛点 对于…...

怎样在网上赚点零花钱?推荐十个正规的赚钱兼职平台

今天要和大家探讨一个激动人心的话题——网络赚钱。在这个互联网日新月异的时代&#xff0c;网络赚钱已经变成了触手可及的现实。如果你正打算在网上赚取一些额外收入&#xff0c;那么这篇文章绝对值得一读&#xff01; 在这个信息泛滥的时代&#xff0c;网络赚钱的机遇随处可…...

手动操作很麻烦?试试这个自动加好友神器吧!

你是不是也觉得手动逐一输入号码或是微信号&#xff0c;再搜索添加很麻烦&#xff1f;试试这个自动加好友神器——个微管理系统&#xff0c;帮助你省去繁琐的手工操作&#xff0c;节省时间和精力。 首先&#xff0c;在系统上登录微信号&#xff0c;无论你有多少个微信号&#…...

金额转大写

金额转大写 /*** 金额转大写* param n* returns {string}*/ export const moneyUppercase (n) > {let fraction [角, 分];let digit [零, 壹, 贰, 叁, 肆,伍, 陆, 柒, 捌, 玖];let unit [[圆, 万, 亿],[, 拾, 佰, 仟]];let head n < 0 ? 欠 : ;n Math.abs(n);let…...

vue的axios配置超时时间;单个接口配置响应时间

vue项目中axios请求统一配置了超时时间&#xff0c;单独接口请求时重设超时时间 根据官网推荐&#xff1a;axios中文文档 1.配置的优先顺序 配置会以一个优先顺序进行合并。这个顺序是&#xff1a;在 lib/defaults.js 找到的库的默认值&#xff0c;然后是实例的 defaults 属性&…...

leetcode-盛水最多的容器-109

题目要求 思路 1.正常用双循环外循环i从0开始&#xff0c;内循环从height.size()-1开始去计算每一个值是可以的&#xff0c;但是因为数据量太大&#xff0c;会超时。 2.考虑到超时&#xff0c;需要优化一些&#xff0c;比如第一个选下标1&#xff0c;第二个选下标3和第一个选下…...

VMware ESXi中安装Proxmox VE

0、巴拉巴拉 前几天某行业HW&#xff0c;闲暇的时候几个技术人员聊天&#xff0c;臭味相投的聊到自己玩的东西。有个玩家说家里用工作站安装Proxmox VE&#xff0c;然后在上面安装软路由、安装NAS。我以前一直想玩玩&#xff0c;没有付诸行动&#xff0c;所以也想弄个集中的方案…...

Java(其十二)--集合·初级

ArrayList集合 集合有很多种&#xff0c;ArrayList 是最常用的一种&#xff0c;集合的作用相当于C中的STL 最显著的特点就是&#xff1a;自动扩容。 一般定义式 ArrayList list new ArrayList(); //该 list 是可以储存各种类型的数据的&#xff0c;要想约束储存的数据&#x…...

疯狂“造人”!美国两党共推新法案,5年培养100万AI及量子人才

当前&#xff0c;全球量子计算人才的短缺已成为制约该领域快速发展的关键瓶颈。 为了解决量子计算人才短缺的问题&#xff0c;各国政府和企业采取了积极措施&#xff0c;加大了对量子教育和培训的投入。根据美国参议院官网消息&#xff0c;2024年5月23日&#xff0c;美国两党议…...

Python 文件操作指南:使用 open 和 with open 实现高效读写

&#x1f340; 前言 博客地址&#xff1a; CSDN&#xff1a;https://blog.csdn.net/powerbiubiu &#x1f44b; 简介 本系列文章主要分享文件操作&#xff0c;了解如何使用 Python 进行文件的读写操作&#xff0c;介绍常见文件格式的读取和写入方法&#xff0c;包括TXT、 CS…...

FasterNet代码阅读

FasterNet 类参数初始化 将图像切分为非重叠的图像块 PatchEmbed 类 将图像分解为非重叠的图像块有以下几个好处&#xff1a; 1. 缩小计算量&#xff1a;对于大尺寸的图像&#xff0c;直接对整个图像进行处理可能会导致计算和内存消耗过大。将图像切分为小块可以降低计算量…...

Rust开源Web框架Salvo源码编译

1.克隆源码: https://github.com/salvo-rs/salvo.git 2.进入salve目录并运行cargo build编译 编译成功 3.编译生成的库 4.安装salve-cli git clone --recursive https://github.com/salvo-rs/salvo-cli.git 编译salve-cli...

基于Java+SpringBoot+Mybaties-plus+Vue+elememt + uniapp 新闻资讯 的设计与实现

一.项目介绍 本系统分为 后端 和 小程序端 后端&#xff1a;点击登录按钮 设置个人中心、 管理员账号数据维护、 基础数据维护、 短视频信息维护(包括查看短视频留言、短视频收藏)、 论坛维护(增删改查帖子信息&#xff0c;包括查…...

TCP—三次握手和四次挥手

目录 一、三次握手和四次挥手的目的 二、TCP可靠的方面 三、什么是三次握手 四、第三次握手的目的 五、什么是四次挥手 六、超时时间的目的 七、SYN包、ACK包、FIN包 八、解决丢包和乱序 九、参考资料 一、三次握手和四次挥手的目的 TCP三次握手的目的主要是为了确保两…...

基于UDP的网络聊天室

一.项目需求&#xff1a; 如果有用户登录&#xff0c;其他用户可以收到这个人的登录信息如果有人发送信息&#xff0c;其他用户可以收到这个人的群聊信息如果有人下线&#xff0c;其他用户可以收到这个人的下线信息服务器可以发送系统信息 二.服务器端 #include <myhead.h&…...

数组-两个升序数组中位数

一、题目描述 二、解题思路 (一).基本思想&#xff1a; 如果列表总长度allsize( arr1.size()arr2.size() ) 为奇数时&#xff0c;中位数位置应该在两个列表排序后的第 allsize/2 位置处&#xff0c;如果allsize为偶数&#xff0c;中位数应该取 (allsize/2)-1 和 allsize/2 的…...

如何通过CMLM-仲景中医AI大模型解决传统中医诊疗现代化难题

如何通过CMLM-仲景中医AI大模型解决传统中医诊疗现代化难题 【免费下载链接】CMLM-ZhongJing 首个中医大语言模型——“仲景”。受古代中医学巨匠张仲景深邃智慧启迪&#xff0c;专为传统中医领域打造的预训练大语言模型。 The first-ever Traditional Chinese Medicine large …...

TCC-G15散热控制实战指南:释放Dell游戏本性能潜力

TCC-G15散热控制实战指南&#xff1a;释放Dell游戏本性能潜力 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 一、问题发现&#xff1a;游戏本散热困境的技术根…...

重构数字桌面:2025年macOS菜单栏管理工具全解析

重构数字桌面&#xff1a;2025年macOS菜单栏管理工具全解析 【免费下载链接】Ice Powerful menu bar manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ice/Ice 问题溯源&#xff1a;为什么你的菜单栏变成了数字垃圾场&#xff1f; 当我们每天打开Mac…...

all-MiniLM-L6-v2效果展示:22.7MB小模型在语义相似度任务中的惊艳表现

all-MiniLM-L6-v2效果展示&#xff1a;22.7MB小模型在语义相似度任务中的惊艳表现 在自然语言处理领域&#xff0c;语义相似度计算是一个基础而重要的任务&#xff0c;它直接影响着搜索、推荐、问答等系统的效果。传统的大模型虽然效果出色&#xff0c;但庞大的体积和计算需求…...

手机生成剧本杀软件2025推荐,创新剧情设计工具助力创作

手机生成剧本杀软件2025推荐&#xff0c;创新剧情设计工具助力创作随着剧本杀市场的蓬勃发展&#xff0c;越来越多的创作者和爱好者希望借助科技的力量来提升创作效率和质量。在2025年&#xff0c;一款名为量子探险AI剧本杀工坊的手机生成剧本杀软件脱颖而出&#xff0c;成为众…...

告别Jupyter Lab:在香橙派AIpro上部署YOLOv5模型的三种实战方法(含命令行与VSCode远程)

香橙派AIpro进阶开发&#xff1a;YOLOv5模型部署的三种高效工作流实战 当你第一次在香橙派AIpro上运行官方提供的YOLOv5目标检测样例时&#xff0c;那种兴奋感可能还记忆犹新——通过Jupyter Notebook点击几下就能看到实时物体识别效果确实令人惊艳。但作为一名有经验的开发者&…...

DIY迷你平衡摩托车:从PID控制到机械设计全解析

1. 迷你平衡摩托车项目概述作为一名嵌入式开发爱好者&#xff0c;我最近完成了一个迷你平衡摩托车的DIY项目。这个项目的灵感来源于大学生智能车竞赛中的平衡单车组别&#xff0c;但相比那些专业竞赛车模&#xff0c;这个迷你版本更适合个人爱好者动手实现。整个项目从原理分析…...

Unity3D RPG游戏开发:从零构建角色扮演游戏的核心系统

1. 环境准备与项目初始化 第一次打开Unity Hub时&#xff0c;新手常会被各种版本和选项搞得晕头转向。我建议直接安装最新的LTS版本&#xff08;比如2022.3&#xff09;&#xff0c;这个版本就像游戏界的"稳定版安卓系统"&#xff0c;既不会太老缺少功能&#xff0c;…...

告别Navicat!免费开源的DBeaver,手把手教你从下载到连接MySQL数据库

数据库管理新选择&#xff1a;DBeaver从入门到精通实战指南 在数据库管理领域&#xff0c;商业软件长期占据主导地位&#xff0c;但开源工具的崛起正在改变这一格局。作为一名长期与数据库打交道的开发者&#xff0c;我深知Navicat等商业工具虽然功能强大&#xff0c;但高昂的授…...

Go 网络编程超时控制方案

Go网络编程中的超时控制方案 在分布式系统和微服务架构盛行的今天&#xff0c;网络通信的稳定性成为关键。Go语言凭借其高效的并发模型和简洁的语法&#xff0c;成为网络编程的热门选择。网络环境复杂多变&#xff0c;超时控制是确保系统健壮性的重要手段。本文将介绍Go网络编…...