集团主站
欢迎来到成都达内官方网站!达内—美国上市公司 亿元级外企IT培训企业!
成都it培训哪家好
成都it培训哪家好
全国服务监督电话:15023458194  |   联系客服   |
当前位置:主页 > 培训课程 > Java >

成都java程序员工资:JDBC获取自增长id以及表的元数据

发布者: 成都达内     浏览次数:     发布时间:2020-07-21 11:12:04

在Statement通过execute或者executeUpdate执行完插入语句后,MySQL会为新插入的数据分配一个自增长id,(前提是这个表的id设置为了自增长,在Mysql创建表的时候,AUTO_INCREMENT就表示自增长)...

  步骤1 : 获取自增长id

  在Statement通过execute或者executeUpdate执行完插入语句后,MySQL会为新插入的数据分配一个自增长id,(前提是这个表的id设置为了自增长,在Mysql创建表的时候,AUTO_INCREMENT就表示自增长)

  CREATE TABLE hero (

  id int(11) AUTO_INCREMENT,

  ...

  }

  但是无论是execute还是executeUpdate都不会返回这个自增长id是多少。需要通过Statement的getGeneratedKeys获取该id

  注: 第20行的代码,后面加了个Statement.RETURN_GENERATED_KEYS参数,以确保会返回自增长ID。 通常情况下不需要加这个,有的时候需要加,所以先加上,保险一些

  PreparedStatement ps = c.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

  package jdbc;

  import java.sql.Connection;

  import java.sql.DriverManager;

  import java.sql.PreparedStatement;

  import java.sql.ResultSet;

  import java.sql.SQLException;

  import java.sql.Statement;

  public class TestJDBC {

  public static void main(String[] args) {

  try {

  Class.forName("com.mysql.jdbc.Driver");

  } catch (ClassNotFoundException e) {

  e.printStackTrace();

  }

  String sql = "insert into hero values(null,?,?,?)";

  try (Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root", "admin");

  PreparedStatement ps = c.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

  ) {

  ps.setString(1, "盖伦");

  ps.setFloat(2, 616);

  ps.setInt(3, 100);

  // 执行插入语句

  ps.execute();

  // 在执行完插入语句后,MySQL会为新插入的数据分配一个自增长id

  // JDBC通过getGeneratedKeys获取该id

  ResultSet rs = ps.getGeneratedKeys();

  if (rs.next()) {

  int id = rs.getInt(1);

  System.out.println(id);

  }

  } catch (SQLException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

  }

  }

  步骤 2 : 获取表的元数据

  元数据概念:

  和数据库服务器相关的数据,比如数据库版本,有哪些表,表有哪些字段,字段类型是什么等等。

  1

  package jdbc;

  import java.sql.Connection;

  import java.sql.DatabaseMetaData;

  import java.sql.DriverManager;

  import java.sql.ResultSet;

  import java.sql.SQLException;

  import java.sql.Statement;

  public class TestJDBC {

  public static void main(String[] args) throws Exception {

  try {

  Class.forName("com.mysql.jdbc.Driver");

  } catch (ClassNotFoundException e) {

  e.printStackTrace();

  }

  try (Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root", "admin");) {

  // 查看数据库层面的元数据

  // 即数据库服务器版本,驱动版本,都有哪些数据库等等

  DatabaseMetaData dbmd = c.getMetaData();

  // 获取数据库服务器产品名称

  System.out.println("数据库产品名称:\t"+dbmd.getDatabaseProductName());

  // 获取数据库服务器产品版本号

  System.out.println("数据库产品版本:\t"+dbmd.getDatabaseProductVersion());

  // 获取数据库服务器用作类别和表名之间的分隔符 如test.user

  System.out.println("数据库和表分隔符:\t"+dbmd.getCatalogSeparator());

  // 获取驱动版本

  System.out.println("驱动版本:\t"+dbmd.getDriverVersion());

  System.out.println("可用的数据库列表:");

  // 获取数据库名称

  ResultSet rs = dbmd.getCatalogs();

  while (rs.next()) {

  System.out.println("数据库名称:\t"+rs.getString(1));

  }

  } catch (SQLException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

  }

  }

(责任编辑:范老师)
最新开班
  • 成都Java培训班
    免费试听名额发放中...
  • 成都C++培训班
    免费试听名额发放中...
  • 成都PHP培训班
    免费试听名额发放中...
  • 成都网络工程培训班
    免费试听名额发放中...
  • 成都Unity3D培训班
    免费试听名额发放中...
  • 成都大数据培训班
    免费试听名额发放中...
  • 成都uid培训班
    免费试听名额发放中...
  • 成都会计培训班
    免费试听名额发放中...
  • 成都Python培训班
    免费试听名额发放中...
  • 成都嵌入式培训班
    免费试听名额发放中...
  • 成都web培训班
    免费试听名额发放中...
  • 成都软件测试培训班
    免费试听名额发放中...
在线留言
提交

校区地址:成都市锦江区东大街紫东楼端35号明宇金融广场19楼1906室

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市高新区奥克斯广场蜀锦路209号一楼商铺

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都锦江区东大街芷泉街229号东方广场C座3楼303

联系电话:15023458194

公交路线:芷泉街(188路;115路;515路;236路;505路;501路;84路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市武侯区佳灵路3号红牌楼广场2号写字楼11楼1115号

联系电话:15023458194

公交路线:红牌楼东(11路;92路;100路;111路;139路;g28路;快速公交K1/K2) 地铁路线:红牌楼站(地铁3号线)

校区地址:成都市锦江区红星路二段70号四川日报大厦502-2

联系电话:15023458194

公交路线:市二医院站(6路;49路;102路;5路;37路;g92路;) 地铁路线:地铁市二医院(地铁3号线)

校区地址:成都市锦江区东大街芷泉段229号东方广场C座16层

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:四川省成都市武侯区高新科技孵化园9号园区E座7楼

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都市高新区奥克斯广场B座1708

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

了解达内动态
关注成都达内教育公众号

首页 | 关于达内 | 课程中心 | 专家师资 | 视频教程 | 学员空间 | 校企合作 | 新闻资讯 | 就业指导 | 网站地图

2016-2025 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56