Java开发基础-JDBC-核心对象的使用—06

JDBC的使用 注册驱动【依赖的驱动类,进行安装】获取连接【Connection建立连接】创建发送SQL语句对象【Connection创建发送SQL语句的Statement】发送SQL语句,并获取返回结果【Statement 发送sql语句到数据库并且取得返回结果】结果集解析【结果集解析,将查询结果解析出来】资源关闭【释放ResultSet、Statement 、Connection】 阅读详情

PreparedStatement另一种重载方法:

下面是JavaAPI在中对其的描述

Connection.prepareStatement(String sql, String[] columnNames)  String[] columnNames 表示的是自动生成值的列名

创建一个能够返回由给定数组指定的自动生成键的默认 PreparedStatement 对象。

可以从中取出新插入数据行中自动增长的列的值

下面通过简单实例演示如何使用

1.创建测试所需的数据库表以及序列 

create table depts_cheri (
  deptno number(8)  primary key,
  dname varchar(20),
  loc varchar(100)
);

create sequence depts_seq_cheri;

create table emp_cheri (
  empno   number(8) primary key,
  ename   varchar(20),
  job     varchar(20),
  mgr     number(8),
  hiredate  date,
  sal     number(11,2),
  comm    number(11,2),
  deptno    number(8)
);

create sequence emps_seq;

2.编写测试程序

public class TestDay03 {
	
	/**
	 * 添加部门,然后向此部门内添加一些员工
	 */
	@Test
	public void test4(){
		//假设要添加的部门数据如下
		String dname = "财务部";
		String loc = "北京";
		
		//假设要添加的员工数据如下
		String ename = "张三";
		String job = "经理";
		int mgr = 0;
		double sal = 8000.0;
		double comm = 2000.0;
		
		String ename2 ="李四";
		String job2 = "职员";
		int mgr2 = 0;
		double sal2 = 5000.0;
		double comm2 = 500.0;
		
		Connection conn = null;
		
		try {
			conn = DBUtil.getConnection();
			conn.setAutoCommit(false);
			
			//先添加部门
			String sql ="insert into depts_cheri values("
					    +"depts_seq_cheri.nextval,?,?)";
			System.out.println(sql);
			//参数2是一个数组,存的是希望被ps记住的字段的名称
			PreparedStatement ps = conn.prepareStatement(sql,new String[]{"deptno"});
			ps.setString(1, dname);
			ps.setString(2, loc);
			ps.executeUpdate();
			
			//从ps中获取它之前记录的字段的值,
			//返回的结果集中只有一条数据。
			//存的就是记录的那些字段的值
			ResultSet rs = ps.getGeneratedKeys();
			rs.next();
			int deptno = rs.getInt(1);//对应ps记录的参数2中数组的元素顺序
			
			//再添加员工
		   sql = "insert into emp_cheri values("
				 +"emps_seq.nextval,?,?,?,?,?,?,?)";
		   //员工1
		   ps = conn.prepareStatement(sql);
		   ps.setString(1, ename);
		   ps.setString(2, job);
		   ps.setInt(3, mgr);
		   ps.setDate(4, null);
		   ps.setDouble(5, sal);
		   ps.setDouble(6, comm);
		   ps.setInt(7, deptno);
		   ps.executeUpdate();
		   
		   //员工2
		   ps = conn.prepareStatement(sql);
		   ps.setString(1, ename2);
		   ps.setString(2, job2);
		   ps.setInt(3,mgr2);
		   ps.setDate(4, null);
		   ps.setDouble(5, sal2);
		   ps.setDouble(6, comm2);
		   ps.setInt(7, deptno);
		   ps.executeUpdate();
		   
			conn.commit();
			
		} catch (SQLException e) {
			try {
				conn.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			e.printStackTrace();
			throw new RuntimeException("添加部门与员工失败!",e);
		}finally{
			DBUtil.close(conn);
		}
		
	}

}

使用Junit方式运行程序后,查看数据库中数据的变化,可以发现数据已成功保存!


适用场合:

当插入数据库中的某一字段column与某一自动增长的列相同时,使用该重载方法取出自动增长的列的字段值,然后将该自动增长列赋值给column字段。

JDBC 实战教程——尚硅谷学习笔记 2023年 技术版本备注IDEA2022.3.3最新版本JDK17MySQL-JDBC 驱动8.0.318.0.25+Druid1.2.17MySQL8.0.31前置技术需要软件MySQL 软件安装(8+ 版本)MySQL 可视化工具安装IDEA 工具安装(推荐 2022 版本)SQL 语句掌握数据库连接命令掌握基本的 DDL,DQL,DML 等命令掌握数据库事务概念Java 基础语法多态机制基本容器使用(集合和数组等)泛型反射等技术。 阅读详情

相关推荐

JDBC(1)四大对象 原理和操作步骤

一、JDBC概述 为什么要使用JDBC? JDBC:java database connectivity SUN公司提供的一套操作数据库的标准规范。 JDBC与数据库驱动的关系:接口与实现的关系。 JDBC规范(掌握四个核心对象): DriverManager:用于注册驱动 Connection: 表示与数据库创建的连接 Statement: 操作数据库sql语句的对象

多多 1721

用prepareStatement(String sql, String[] columnNames)获取自动生成的id

/**   * 先增加一个部门,再给此部门增加一个员工.   * 要点:增加部门后如何获得生成的部门ID.   */  @Test  public void test2(){   //假设页面传入的部门数据是   String dname="软件部";   String loc="北京";   //假设传入的员工数据是   String ename="八戒";   Strin

lyq18235187358的博客 3963

从理论到实践:TRL去嵌入校准在国产矢量网络分析仪上的应用全解析

本文全面解析了TRL去嵌入校准技术在国产矢量网络分析仪上的应用实践,从核心算法到工程实现。详细介绍了TRL校准的数学原理、国产VNA的程控接口开发、校准件质量评估及测量不确定度控制策略,帮助工程师掌握高频器件测量的关键技术。

tech5的博客 1016

12_02.【Java】JDBC中常用的类和接口

JDBC中常用的类和接口 java.sql包中提供了丰富的接口、类,还有一些Enum枚举对象和Exception常见异常用于数据库编程。利用这些类和接口可以放拜年的访问并处理存储在数据库中的数据。本节将介绍一些常用的JDBC接口和类,这些接口和类都在java.sql包中。 一、DriverManager类 DriverManager类是JDBC的管理层,用来管理数据库中的驱动程序。在使用Java操作数据库之前,必须使用Class类的静态方法forName(String className)加载能够连接数据库

changchuanlai 1010

Unity UI Toolkit避坑指南:从官方Samples到实际项目,这些‘坑’我帮你踩过了

本文分享了Unity UI Toolkit在实际项目中的避坑经验和优化技巧,包括动画系统的高效替代方案、3D世界UI的创新实现方式、USS样式继承的反直觉规则等。通过详细的代码示例和性能优化策略,帮助开发者避免常见陷阱,提升开发效率。

weixin_29535577的博客 343

AI+Xmind自动生成测试用例(思维导图格式)

最后:我是Walker,一个热爱分享编程知识的程序员,希望能够帮助到你!

Think_and_work的博客 2334

Connection 对象简介 方法解读 JDBC简介(四)

Connection 对象简介 方法解读 JDBC简介(四) 通过驱动管理器DriverManager的getConnection方法,可以创建到指定URL的连接 Connection conn = DriverManager.getConnection(url, user, password); 看得出来,在JDBC中连接被...

noteless的博客 3627

ROS TF坐标转换实战:从零搭建机器人坐标系(附常见问题排查)

本文提供了一份ROS TF坐标转换的实战指南,详细讲解了如何从零为机器人搭建完整的坐标系,并深入解析了TF的原理。内容涵盖静态与动态坐标变换的发布、URDF模型使用、以及Rviz和rqt_tf_tree等可视化调试工具。文章还附带了常见问题排查表,帮助开发者快速定位并解决TF树断裂、数据错位等典型问题。

weixin_29268385的博客 206

JAVA【JDBC】【使用PreparedStatement操作数据库】

这里我们是先连接到了我们上述的数据表,然后将数据表中的user和password的内容独取出来,然后编成sql语句,交给我们的mysql,并且如果查询失败就返回用户名不存在或者密码错误,如果查询成功就返回登陆成功。针对于不同的表我们想要获取到的查询数据的结构一定是不同的,所以我们需要在查询的时候将我们查询的结构传入,然后利用反射机制构造出对应的对象,然后将对应的对象返回。原来我们想表达的是 xx and xx是一个并且的关系,也就是我们的use和password同时正确的时候才返回结果。...

芊樱烛渊的博客 5519

VSLAM框架对比

格VSLAM特点介绍: (一)ORB-SLAM2 (二)ORB-SLAM3 (三)LSD-SLAM (四)

ljtx200888的博客 2295

SAP Parallel Accounting(平行分类账业务)配置及操作手册(超详细的说明和测试)

非常详细的介绍了SAP 的平行分类账配置以及测试效果哦

nopicture的博客 4346

PreparedStatement

一、PreparedStatement概述 可以通过调用 Connection 对象的 preparedStatement(String sql) 方法获取 PreparedStatement 对象。PreparedStatement 接口是 Statement 的子接口,它表示一条预编译过的 SQL 语句。PreparedStatement 对象所代表的 SQL 语句中的参数用问号(?)来表示,调用 PreparedStatement 对象的 setXxx() 方法来设置这些参数. setXxx(...

shkstart的博客 747

【AI大模型应用开发】【LangChain系列】实战案例6:利用大模型进行文本总结的方法探索,文本Token超限怎么办?

假设有一组文档(PDF、Notion页面、客户问题等),你想要总结内容。可以利用大模型来帮你。今天来系统看下利用大模型来对文本进行总结的方法,以LangChain的使用为例。

同学小张的博客 3749

2024年Java最全Java开发基础-JDBC-核心对象的使用—06,熬夜整理Java面试笔试题

2.编写测试程序/***/@Test//假设要添加的部门数据如下String dname = “财务部”;String loc = “北京”;//假设要添加的员工数据如下String ename = “张三”;String job = “经理”;String ename2 =“李四”;String job2 = “职员”;try {//先添加部门)”;//参数2是一个数组,存的是希望被ps记住的字段的名称//从ps中获取它之前记录的字段的值,

2301_79098686的博客 739

从 SAP Gateway 旧 add-ons 卸载到 SAP S/4HANA 转换的清理路线

摘要: SAP Gateway系统的维护难点往往源于历史遗留组件的堆积,而非OData服务本身的复杂性。早期系统为支持多种服务类型而安装的各类add-ons(如IW_SCS、IW_CNT、GW_CORE等),随着系统升级和团队更替逐渐成为技术负债。自SAP NetWeaver 7.40起,核心功能已整合至SAP_GWFND组件,使架构显著简化。在向S/4HANA迁移时,需重点清理已废弃的add-ons(如IW_SCS、IW_GIL等),但必须谨慎验证其关联服务是否仍被调用。组件清理需结合系统日志和调用链分析

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 424

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java培训笔记 06-Java使用JDBC连接

Connection对象 一个connection对象定义了对于指定表的一个链接或会话空hi,可以执行SQL表达式并大会结果集。 数据库驱动可以使用class.forName()来加载 一个Connection对象有三个重要部分:①数据源的url ②用户名 ③密码 使用getConnection()方法建立 class.forName("JDBCDriver Name"); Connection myConn = DriverManager.getConnection(url); Qu

Tangqiu_的博客 255

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

JDBC的概念以及核心六步

JDBC 概念 JDBC(Java DataBase Connectivity):Java连接数据库,可以使用Java语言连接数据库完成CRUD操作; CRUD:指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写; JDBC核心思想 Java中定义了访问数据库的接口,可以为多种关系型数据库提供统一的访问方式; 由...

Willing卡卡的博客 592

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【MySQL】JDBC的基础使用

JDBC是Java连接和使用数据库的关键技术,它的重复性很高,仍然需要多加练习。源码JDBC的基础使用。

Starc_的博客 822

JDBC基础

因为各个数据库厂商的DBMS软件各有不同,那么各自的内部如何通过SQL实现增、删、改、查等操作管理数据,只有这个数据库厂商自己更清楚,因此把接口规范的实现交给各个数据库厂商自己实现。Statement接口在执行SQL语句时,会产生 SQL注入攻击问题,SQL注入问题表示当使用 statement执行动态构建的SQL查询时往往需要将査询条件与SQL语句拼接在一起,直接将参数和SQL语句一并生成,让SQL的查询条件始终为true得到结果。占位符的方式,将传入的参数用一对单引号包裹起,无论传递什么都作为值。

m0_50460160的博客 648

jdbc基础

JDBC 一、JDBC快速入门 1.jdbc的概念 JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问,它是由一组用Java语言编写的类和接口组成的。 2.jdbc的本质 其实就是java官方提供的一套规范(接口)。用于帮助开发人员快速实现不同关系型数据库的连接! 3.jdbc的快速入门程序 导入jar包 注册驱动 Class.forName("com.mysql.jdbc.Dri

chen1042246612的博客 292

JDBC核心技术[详细]

00Web技术概览 01JDBC概述 1-1数据的持久化 一、持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。 二、持久化的主要应用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。 1-2Java中的数据存储技术 在Java中,数据库存取技术可分为如下几类: JDBC直接访问数据库 JDO (Java Da

ZZWDN_旺小白的博客 693

JDBC数据库连接技术基础及核心API

方法将游标移动到结果集的下一行,逐行遍历数据库查询的结果,返回值为boolean类型,true代表有下一行结果,false则代表没有。性能提升:PreparedStatement是预编译SQL语句,同一SQL语句多次执行的情况下,可以复用,不必每次重新编译和解析。Java提供接口规范,由各个数据库厂商提供接口的实现,厂商提供的实现类封装成jar文件,也就是我们俗称的数据库驱动jar包。获取单列结果:可以通过getXxx的方法获取单列的数据,该方法为重载方法,支持索引和列名进行获取。

qq_33697759的博客 801

视频教程-Java基础核心编程-Java

Java基础核心编程 本系列课程由多位老师共同录制而成,旨在为想要学习Jav...

weixin_26930753的博客 429
上一篇: Java开发基础-JDBC-核心对象的使用—05
下一篇: Java开发基础-JDBC-对其技术的支持—01
Coder_Boy_
博客等级 码龄10年 2804粉丝 819原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder_Boy_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值