JDBC使用步骤-小白入门

一.JDBC开发流程

  1. 加载并注册JDBC驱动
  2. 创建数据库连接
  3. 创建Statement对象
  4. 遍历查询结果
  5. 关闭连接,释放资源
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;public class StandardJDBCSample {public static void main(String[] args) {Connection conn = null;try {
//        1. 加载并注册JDBC驱动Class.forName("com.mysql.cj.jdbc.Driver");
//        2. 创建数据库连接conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/imooc?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai", "root", "zsj123");
//        3. 创建Statement对象Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("select * from employee where dname='研发部'");
//        4. 遍历查询结果while (rs.next()) {Integer eno = rs.getInt(1);String ename = rs.getString("ename");float salary = rs.getFloat("salary");String dname = rs.getString("dname");System.out.println(dname + "-" + eno + "-" + ename + "-" + salary);}}catch (Exception e){e.printStackTrace();}finally {try {if (conn != null && conn.isClosed() == false) {//        5. 关闭连接,释放资源conn.close();}}catch (Exception ex){ex.printStackTrace();}}}
}

运行结果:

研发部-3308-张三-6000.0
研发部-3420-李四-8700.0

1.使用JDBC第一步:注冊驱动有三种方式:

  • Class.forName(“com.mysql.jdbc.Driver”);
    ​ 推荐这样的方式,不会对详细的驱动类产生依赖
  • DriverManager.registerDriver(com.mysql.jdbc.Driver);
    ​ 会对详细的驱动类产生依赖
  • System.setProperty(“jdbc.drivers”, “driver1:driver2”);
    ​ 尽管不会对详细的驱动类产生依赖;但注冊不太方便。所以非常少使用

2.使用JDBC第二步:建立连接
通过Connection建立连接,Connection是一个接口类。其功能是与数据库进行连接(会话)。
建立Connection接口类对象:
Connection conn = DriverManager.getConnection(url, user, password);
当中URL的格式要求为:
JDBC:子协议:子名称//主机名:port/数据库名?属性名=属性值&…
如:"jdbc:mysql://localhost:3306/test“

3.使用JDBC第三步:创建运行对象
运行对象Statement负责运行SQL语句。由Connection对象产生。
Statement接口类还派生出两个接口类PreparedStatement和CallableStatement,这两个接口类对象为我们提供了更加强大的数据访问功能。
创建Statement的语法为:
Statement st = conn.createStatement();

4.使用JDBC第四步:运行SQL语句
运行对象Statement提供两个经常使用的方法来运行SQL语句。

  • executeQuery(Stringsql),该方法用于运行实现查询功能的sql语句。返回类型为ResultSet(结果集)。
    如:ResultSet rs =st.executeQuery(sql);
  • executeUpdate(Stringsql),该方法用于运行实现增、删、改功能的sql语句,返回类型为int,即受影响的行数。
    如:int flag = st.executeUpdate(sql);

5.使用JDBC第五步:处理运行结果
ResultSet对象
ResultSet对象负责保存Statement运行后所产生的查询结果。
结果集ResultSet是通过游标来操作的。
游标:就是一个可控制的、能够指向随意一条记录的指针。
有了这个指针我们就能轻易地指出我们要对结果集中的哪一条记录进行改动、删除,或者要在哪一条记录之前插入数据。一个结果集对象中仅仅包括一个游标。

6.使用JDBC 第六步——释放资源
Connection对象的close方法用于关闭连接,并释放和连接相关的资源。

二.JDBC驱动的秘密

1.如何获取JDBC驱动Jar

在百度中输入mysql driver
在这里插入图片描述
下载链接
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

将下载好的包放到lib包内:
在这里插入图片描述

2.创建数据库连接代码

String dbDriver = "com.mysql.cj.jdbc.Driver"; //JDBC驱动类 
String dbURL = "jdbc:mysql://localhost:3306/imooc" ; //连接字符串 
String dbUsername = "root"; //数据库用户名 
String dbPassword = "123456"; //数据库密码 
//1.加载并初始化JDBC驱动 
Class.forName(dbDriver); 
//2.创建数据库连接 
Connection connection = DriverManager.getConnection(dbURL, dbUsername, dbPassword);

3.Class.forName的作用

  • Class.forName用于加载指定的JDBC驱动类
  • Class.forName本质是通知JDBC注册这个驱动类
  • 驱动由数据库厂商自行开发,连接字符串也不同

4.数据库与连接字符串

在这里插入图片描述

5.DriverManager 设备管理器

  • DriverManager用于注册/管理JDBC驱动程序
  • DriverManager.getConnection(连接字符串,用户名,密码)
  • 返回值Connection对象,对应数据库的物理网络连接

6.Connection对象

  • Connection对象用于JDBC与数据库的网络通信对象
  • java.sql.Connection是一个接口,具体由驱动厂商实现
  • 所有数据库的操作都建立在Connection基础上
    在这里插入图片描述

7.MySQL连接字符串

  • 格式: jdbc:mysql://[主机ip][:端口]/数据库名?参数列表
  • 主机ip与端口是可选设置,默认值为127.0.0.1与3306
  • 参数列表采用url编码,格式:参数1=值1&参数2=值2&…

8.MySQL连接字符串常用参数

在这里插入图片描述

Statement:使用从此接口创建的对象将SQL语句提交到数据库。除了执行存储过程之外,一些派生接口还接受参数。
ResultSet:在使用Statement对象执行SQL查询后,这些对象保存从数据库检索的数据。它作为一
个迭代器,允许我们移动其数据。
9.连接数据库的常见问题

  • ClassNotFoundException - 类未找到异常
    在这里插入图片描述

原因:有可能这个jar包驱动没有加入到工程中

  • Connection refuse - 数据库连接被拒绝异常
    在这里插入图片描述

原因:ID环境或端口号配置没有配置好,远程连接连不上,服务器的防火墙把3306端口给屏蔽了,必须在防火墙上将3306端口放行。

  • Access denied for user - 用户名与密码错误异常
    原因:密码或用户名没写对
    在这里插入图片描述

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

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

相关文章

嵌入式入门学习方向

最近又到了毕业季,很多小伙伴都在烦恼就业的事情,我也只是刚刚毕业没几年的毕业生,在这里想分享一些经验。如果觉得不妥的,可以评论区留言。 首先呢,博主的专业是电子信息工程,在我的了解中,正…

【面试】Java虚拟机的生命周期

目录 1. 说明2. 启动(Initialization)3. 运行(Running)4. 服务(Servicing)5. 终止(Termination) 1. 说明 1.Java虚拟机(JVM)的生命周期通常指的是JVM实例从启…

opencv进阶 ——(七)图像处理之寸照换背景

寸照换背景,通常指的是将个人证件照片的背景色更换为另一种颜色,如白色、蓝色或红色等,以满足不同用途的要求。例如,护照照片通常要求白色背景,而身份证照片可能需要蓝色背景。这个过程通常涉及到图像处理技术&#xf…

学习笔记——数据通信基础——数据通信网络(网络类型)

网络类型 1、按照地理覆盖范围来划分,网络可以分为:局域网(Local Area Network)、城域网(Metropolitan Area Network)和广域网(Wide Area Network)。 局域网(LAN)∶在某一地理区域内由计算机、服务器以及各种网络设备组成的网络。局域网的覆盖范围一般…

低成本、低代码,三十分钟教会你使用Notion作为CMS搭建自己的Web网站

低成本、低代码,三十分钟教会你使用Notion作为CMS搭建自己的Web网站 第一步、准备Notion账号新建网页开放网页外部访问**使用[nextjs-notion-starter-kit](https://github.com/transitive-bullshit/nextjs-notion-starter-kit)项目将notion网页转换成个人网站**克隆项目填入No…

【国产中颖】SH79F9202U单片机驱动LCD段码液晶学习笔记

1. 引言 因新公司之前液晶数显表产品单片机一直用的是 C51单片机(SH79F9202U9),本人之前没有接触过这款单片机,为了维护老产品不得不重新研究研究这款单片机。 10位ADC LCD的增强型8051微控制器 SH79F9202是一种高速高效率8051可兼容单片机。在同样振…

构造+模拟,CF1148C. Crazy Diamond

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1148C - Codeforces 二、解题报告 1、思路分析 题目提示O(5n)的解法了,事实上我们O(3n)就能解决,关键在于1,n的处理 我们读入数据a[],代表初始数组…

继电器的选型和英应用

如何保证信号的稳定? 怎么消除继电器触点的电弧? 危害: 继电器的触点在动作时容易产生电弧,电弧具有热效应容易导致触点烧蚀粘接,缩短继电器的寿命,并且产生电弧的过程中会对外进行电磁辐射,…

GoFly框架快速新增接口/上手写代码

拿到一个新框架大家可能无从下手,因为你对框架设计思路、结构不了解,从而产生恐惧,所以我们框架是通过简单可视化界面安装,安装后即可看到效果,然后点击先点点看各个功能,看现有的功能是怎么写的&#xff0…

【错误记录】HarmonyOS 运行报错 ( Failure INSTALL_PARSE_FAILED_USESDK_ERROR )

文章目录 一、报错信息二、问题分析三、解决方案 一、报错信息 在 DevEco Studio 中 , 使用 远程设备 , 向 P40 Failure[INSTALL_PARSE_FAILED_USESDK_ERROR] compileSdkVersion and releaseType of the app do not match the apiVersion and releaseType on the device. 二、…

ABB 控制柜

1,主计算机:相当于电脑的主机,用于存放系统和数据,需要24V直流电才能工作。执行用户编写的程序,控制机器人进行响应的动作。主计算机有很多接口,比如与编程PC连接的服务网口、用于连接示教器的网口、连接轴计算机板的接口、连接安全面板的接口、不同的现场总线卡接口(比…

OrangePi AIpro测评

文章目录 1、外观部分2、系统初探3、AI性能体验4、总结 首先非常感谢csdn以及香橙派能够提供这样一个平台,可以测试OrangePi AIpro这样一块开发板,这块板子给我的感觉还是非常不错的,非常适合用来作为嵌入式学习的板子,性能也达到…

什么是边缘计算网关?工业方向应用有哪些?天拓四方

在数字化时代,信息的传输与处理变得愈发重要,而其中的关键节点之一便是边缘计算网关。这一先进的网络设备,不仅扩展了云端功能至本地边缘设备,还使得边缘设备能够自主、快速地响应本地事件,提供了低延时、低成本、隐私…

matlab工具使用记录-编辑器和命令行窗口分开还原

工具:matlab2021b 场景:在使用软件的过程中,我们误操作将matlab的编辑器单独出来了。这时候对软件进行各种操作都还原不回去。 matlab中编辑器和命令行窗口分开了如下图所示。 这时候只需要使用快捷键在编辑器窗口按CtrlshiftD,…

linux Inodes满导致数据库宕机

项目经理反馈集群环境中有个节点无法使用了需要支援下,同时发过来截图说明磁盘还是有空的。 登录系统后直接发现问题 orcl2:/home/oracledb2> sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Wed May 29 13:59:21 2024 Copyright (c) 1982,…

Java基础学习:深入解析Java中的位运算符

在Java中,位运算符用于对整数类型的值进行位运算。以下是Java中的位运算符: 位与(&):两位都为1时,结果为1,否则为0。 位或(|):两位中有1个为1,结果为1。 位非(~):位的反&#…

新人开发新系统,旧人维护旧系统

通常来说旧系统存在一些难以解决的问题,软件架构及逻辑实现可能会有一定的缺陷和复杂度,甚至有些烂系统可以称为”焦油坑“,意思是出现问题难以分析解决,谁来谁陷进去。因此,如果同时存在新系统(可能正在开…

流形学习(Manifold Learning)

基本概念 Manifold Learning(流形学习)是一种机器学习和数据分析的方法,它专注于从高维数据中发现低维的非线性结构。流形学习的基本假设是,尽管数据可能在高维空间中呈现,但它们实际上分布在一个低维的流形上。这个流…

摩尔线程MTT S4000 AI GPU助力30亿参数大模型训练,性能比肩英伟达同类解决方案

中国国产GPU制造商摩尔线程(Moore Threads)在AI加速器领域取得了显著进展,其最新推出的MTT S4000 AI GPU在训练大规模语言模型时表现突出,据称相较于其前代产品有着显著的性能提升。根据cnBeta的报道,搭载S4000 GPU的全新“酷鹅千卡智能计算集…

装机必备——截图工具Snipaste安装教程

装机必备——截图工具Snipaste安装教程 软件下载 软件名称:Snipaste2.7 软件语言:简体中文 软件大小:15.37M 系统要求:Windows7或更高, 32/64位操作系统 硬件要求:CPU2GHz ,RAM2G或更高 下载通…