注意:其中的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中如何获得表中的,自增长的字段值的更多相关文章

  1. Kettle ETL 来进行mysql 数据同步——试验环境搭建(表中无索引,无约束,无外键连接的情况)

    今天试验了如何在Kettle的图形界面(Spoon)下面来整合来mysql 数据库中位于不同数据库中的数据表中的数据. 试验用的数据表是customers: 第三方的数据集下载地址是:http://w ...

  2. 获取一个表中的字段总数(mysql) Navicat如何导出Excel格式表结构 获取某个库中的一个表中的所有字段和数据类型

    如何获取一个表中的字段总数 1.function show columns from 表明: 结果 : 2.functiuon select count(*) from INFORMATION_SCH ...

  3. SQL中 将同一个表中的A列更新到B列,B列更新到A列

    有网友在SKYPE问及,如标题,SQL中 将同一个表中的A列更新到B列,B列更新到A列. 其实这个不是问题,直接写更新语句即可,可以参考下面动画演示: SQL source code: CREATE ...

  4. Linq 中查询一个表中指定的字段

    //Linq中查询一个表中指定的几个字段: ); // FindAllItems()为查询对应表的所有数据的方法: // Where 里面为查询条件 // Select 为查询的筛选条件 new{} ...

  5. 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 ...

  6. JDBC中级篇(MYSQL)——处理大文本(CLOB)

    注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package b_blob_clob; import java.io.FileNotFoundException; import ...

  7. JDBC第一篇--【介绍JDBC、使用JDBC连接数据库、简单的工具类】

    1.什么是JDBC JDBC全称为:Java Data Base Connectivity,它是可以执行SQL语句的Java API 2.为什么我们要用JDBC 市面上有非常多的数据库,本来我们是需要 ...

  8. 用sqoop将mysql的数据导入到hive表中

    1:先将mysql一张表的数据用sqoop导入到hdfs中 准备一张表 需求 将 bbs_product 表中的前100条数据导 导出来  只要id  brand_id和 name 这3个字段 数据存 ...

  9. mysql数据库中指定值在所有表中所有字段中的替换

    MySQL数据库: 指定值在数据库中所有表所有字段值的替换(存储过程): 1.写一个存储过程,查指定数据库中所有的表名: CREATE PROCEDURE init_replace(in orig_s ...

随机推荐

  1. c++中的基本IO

    引言 c++不直接处理输入和输出,而是通过标准库中的类型处理IO.IO的设备可以是文件.控制台.string.c++主要定义了三种IO类型,分别被包含在iostream.fstream.sstream ...

  2. org.apache.maven.archiver.mavenarchiver.getmanifest怎么解决——原因就是你的maven的配置文件不是最新的

    转载:https://www.cnblogs.com/flytop/p/8933728.html原因就是你的maven的配置文件不是最新的 1.help ->Install New Softwa ...

  3. vue使用GraphVis开发无限拓展的关系图谱

    1.去GraphVis官网下载对应的js,新版和旧版的js有所不同,看自己需求引入旧版还是新版(GraphVis官方网址:http://www.graphvis.cn/) visgraph.min.j ...

  4. LAMP和LNMP环境搭建的艰辛历程

    目录 1. LAMP环境的搭建 1. Apache 安装apache遇到的问题 2. mysql 登录mysql的方法 3. PHP 2. Lnmp环境的搭建 1. nginx 2. PHP 3. 配 ...

  5. JavaScript-编译与闭包

    编译原理 尽管 JavaScript 经常被归类为"动态"或"解释执行"的语言,但实际上它是一门编译语言.JavaScript 引擎进行的编译步骤和传统编译语言 ...

  6. C++动态内存管理与源码剖析

    引言 在本篇文章中,我们主要剖析c++中的动态内存管理,包括malloc.new expression.operator new.array new和allocator内存分配方法以及对应的内存释放方 ...

  7. CTF中的序列化与反序列化

    记一些CTF出现的序列化与反序列化的知识点和题目. 序列化和反序列化的概念 序列化就是将对象转换成字符串.字符串包括 属性名 属性值 属性类型和该对象对应的类名. 反序列化则相反将字符串重新恢复成对象 ...

  8. RHCSA_DAY07

    echo $PATH 用户账号管理 用户账号的作用:用户账号可用来登录系统,可以实现访问控制 用户模板目录:/etc/skel/ [root@localhost ~]# ls -a /etc/skel ...

  9. 如何读懂Framework源码?如何从应用深入到Framework?

    如何读懂Framework源码? 首先,我也是一个应用层开发者,我想大部分有"如何读懂Framework源码?"这个疑问的,应该大都是应用层开发. 那对于我们来讲,读源码最大的问题 ...

  10. 大学同学做Java开发比我多5K,八年老Android只会crud该转Java吗?

    最近在网上看到这样一个帖子: 做了八年Android开发,感觉这块做着也挺没意思,日常工作就是做一些架构优化,质量数据监控,改一改构建脚本,最主要的是业务负责人没有一个是做客户端的,都是后端的人. 最 ...