JDBC中级篇(MYSQL)——在JDBC中如何获得表中的,自增长的字段值
注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接:
package c_increment;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import util.JdbcUtil;
/**
*
* 在JDBC中如何获得表中的,自增长的字段值。
*
* 此例:
* 建立在employee和dept表上;
*
* -- 插入数据
* INSERT INTO dept(NAME) VALUES('软件开发部');
* -- 同时再插入员工
* INSERT INTO employee(NAME,deptId) VALUES('张三',1);
* -- 如果是java程序插入部门和员工的时候
* -- 先插入部门的时候,如何知道自增长的值?
* -- 再插入员工的时候,需要自增长产生的部门id!
*
* @author mzy
*
*/
public class Demo01 {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = JdbcUtil.getConnection();
/**
* 同时插入一个部门和该部门的员工的数据
*/
String deptSql = "insert into dept(name) values(?)";
String empSql = "insert into employee(name,deptId) values(?,?)";
/**
* 如果获取自增长的生成的值?
* 1)设置是否可以返回自增长的值
* RETURN_GENERATED_KEYS: 可以返回自增长生成值
* NO_GENERATED_KEYS:不能返回自增长的值
*/
stmt = conn.prepareStatement(deptSql, Statement.RETURN_GENERATED_KEYS);
//参数赋值
stmt.setString(1, "软件维护部");
//执行插入部门的sql
stmt.executeUpdate();
/**
* 2)获取自增长的值
* 注意: 该ResultSet只包含了自增长的字段
*
* 为什么是1呢?
* 因为一个表中可以有多个自增长的字段;
* 获得对应的自增长的属性,获取第几个就填几
*/
rs = stmt.getGeneratedKeys();
int deptId = 0;
if(rs.next()){
deptId = rs.getInt(1);
} // 当然还可以通过先插,再查的方式,但是比起这种过于繁琐
// 为什么没关闭,传入参数不相同?导致对象的不同?
stmt = conn.prepareStatement(empSql);
stmt.setString(1, "李四");
stmt.setInt(2, deptId);
//执行插入员工的sql
stmt.executeUpdate();
System.out.println("添加成功");
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtil.close(rs, stmt, conn);
}
}
}
JDBC中级篇(MYSQL)——在JDBC中如何获得表中的,自增长的字段值的更多相关文章
- Kettle ETL 来进行mysql 数据同步——试验环境搭建(表中无索引,无约束,无外键连接的情况)
今天试验了如何在Kettle的图形界面(Spoon)下面来整合来mysql 数据库中位于不同数据库中的数据表中的数据. 试验用的数据表是customers: 第三方的数据集下载地址是:http://w ...
- 获取一个表中的字段总数(mysql) Navicat如何导出Excel格式表结构 获取某个库中的一个表中的所有字段和数据类型
如何获取一个表中的字段总数 1.function show columns from 表明: 结果 : 2.functiuon select count(*) from INFORMATION_SCH ...
- SQL中 将同一个表中的A列更新到B列,B列更新到A列
有网友在SKYPE问及,如标题,SQL中 将同一个表中的A列更新到B列,B列更新到A列. 其实这个不是问题,直接写更新语句即可,可以参考下面动画演示: SQL source code: CREATE ...
- Linq 中查询一个表中指定的字段
//Linq中查询一个表中指定的几个字段: ); // FindAllItems()为查询对应表的所有数据的方法: // Where 里面为查询条件 // Select 为查询的筛选条件 new{} ...
- B表中的pid对应A表中id,查询A表中数据,根据b表中对应a表中该id的数据数目排序
B表中的pid对应A表中id,查询A表中数据,根据b表中对应a表中该id的数据数目排序 select a.*,count(*) as c from a left join b on a.id=b.ai ...
- JDBC中级篇(MYSQL)——处理大文本(CLOB)
注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package b_blob_clob; import java.io.FileNotFoundException; import ...
- JDBC第一篇--【介绍JDBC、使用JDBC连接数据库、简单的工具类】
1.什么是JDBC JDBC全称为:Java Data Base Connectivity,它是可以执行SQL语句的Java API 2.为什么我们要用JDBC 市面上有非常多的数据库,本来我们是需要 ...
- 用sqoop将mysql的数据导入到hive表中
1:先将mysql一张表的数据用sqoop导入到hdfs中 准备一张表 需求 将 bbs_product 表中的前100条数据导 导出来 只要id brand_id和 name 这3个字段 数据存 ...
- mysql数据库中指定值在所有表中所有字段中的替换
MySQL数据库: 指定值在数据库中所有表所有字段值的替换(存储过程): 1.写一个存储过程,查指定数据库中所有的表名: CREATE PROCEDURE init_replace(in orig_s ...
随机推荐
- SpringBoot: 后台接口文档 - 基于Swagger3
目录 前言:什么是Swagger 起步:(只需简单的3步) 加载依赖 添加注解@EnableOpenApi 启动SpringBoot,访问Swagger后台界面 配置:基于Java的配置 注解:Swa ...
- [考试总结]noip18
发现之前咕掉了这个考试的总结. 今天就把它给补上. 这也是一个炸裂的一场 开局以为 \(T1\) 可做,然而事实证明我又错了... 莽了一个随机化上去,轻松过了所有样例... 以为稳了 然而挂掉了.. ...
- 第十六篇 -- QListWidget与QToolButton(功能)
效果图: 添加的部分,就是对几个action绑定了槽函数,完成相应的功能. listWidget操作的都是item,添加一个item,删除一个item,插入一个item等等.那么只需要知道item的几 ...
- vue源码解析之observe
一. vue文档中有"由于 JavaScript 的限制,Vue 不能检测以下数组的变动",是否真是由于JavaScript的限制,还是出于其他原因考虑 当你利用索引直接设置一个数 ...
- [源码解析] 机器学习参数服务器ps-lite(2) ----- 通信模块Van
[源码解析] 机器学习参数服务器ps-lite(2) ----- 通信模块Van 目录 [源码解析] 机器学习参数服务器ps-lite(2) ----- 通信模块Van 0x00 摘要 0x01 功能 ...
- 只是想虐下春丽,一不当心玩了下serverless...感觉还不错哟!
事情是这样的-- 前天下午天太热,我在家看电视,换台突然就看到了正在播<西游记>,窗外蝉声特别响,我一下就有种穿越回小学暑假的感觉.当时,我就特别想把我那台小霸王翻出来,玩两盘街霸--虐一 ...
- spring框架的学习->从零开始学JAVA系列
目录 Spring框架的学习 框架的概念 框架的使用 Spring框架的引入 概念 作用 内容 SpringIOC的学习 概念 作用 基本使用流程 SpringIOC创建对象的三种方式 通过构造器方式 ...
- jdk的下载与安装教程
最近在学逆向,就是要反编译人家的java代码,在这之前要先安装环境,下面是下载和安装JDK的教程: 1.JDK下载地址: http://www.oracle.com/technetwork/java/ ...
- 从net到java:java快速入门
学习java那是不可能的,到为什么不学习一下呢.仅为总结.希望自己在不久的将来能书写优美的java程序.加油!奥利给 1.注释 注释的重要性不言而喻,我们不管写什么代码注释必不可少,那么java的注释 ...
- 堪称教科书级别的Android音视频入门进阶学习手册,开源分享!
概述 随着整个互联网的崛起,数据传递的形式也在不断升级变化,总的流行趋势如下: 纯文本的短信,QQ -> 空间,微博,朋友圈的图片文字结合 -> 微信语音 -> 各大直播软件 -&g ...