目录


获取数据库自动生成的主键;

update 更新操作以后,如果需要用到结果集,可以通过 PreparedStatement.getResultSet()方法获得结果集;

getGeneratedKeys(); 获取执行完插入语句后自动生成的键,结果封装在一个结果集里面;

PreparedStatement 对象,进行预编译的时候,可以接受2个参数,第二个参数表示是否自动获得自动生成的键,mysql 默认是自动获得 ;

但是我们还是自己写上,毕竟不同厂商之间实现不同;mysql 默认获得,兴许 oracle 默认就不获得;

获得的结果,封装在一个 结果集 里面。然后调用 PreparedStatement.getGeneratedKeys(); 拿到这个结果集 ;

代码演示:


Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null; try {
connection = JdbcUtils.getConnection();
String sql = "INSERT INTO testBlob(image) VALUES(?)";
// 接受2个参数,第二个参数,是否自动获得自动生成的键
statement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); File file = new File("src/ijava/xin/images/th2.jpg");
InputStream inputStream = new FileInputStream(file); statement.setBinaryStream(1, inputStream); int num = statement.executeUpdate(); if(num>0){
// 获取 封装了自动生成的键的结果集
resultSet = statement.getGeneratedKeys() ;
if (resultSet.next()){
// 这里我不知道,它返回的结果集中自动生成的键的名字是什么。
// 反正我写id 不对,那么就只能使用 下标获取了,写了 1 ;
System.out.println(resultSet.getInt(1));
}
} } catch (Exception e) {
e.printStackTrace();
} finally {
JdbcUtils.closedConnection(resultSet, statement, connection); }

上述的操作,仅对 insert 有效,毕竟只有插入操作,才会生成键 ;


JDBC调用存储过程

  • 存储过程是什么?

    存储过程就相当于方法一样,只是这个方法是数据里面的方法,可以理解为数据库里面的处理数据的方法;
    
    目前只需要会调用存储过程即可;以后在oracle课程中会将存储过程的细节;存储过程在金融证券中用到多 ;
    
    写于 2018年5月31日00:00:05;
    
    。
  • 调用存储过程

首先需要先获得 CallableStatement 对象 ,并调用存储过程;

CallableStatement cStmt = conn.prepareCall("{call demoSp(?,?)}") ;  // 参数是存储过程的名字 ;

设置参数注册返回值,得到输出 ;


// 设置参数
cStmt.setString(1,"abcdef") ; // 告诉mysql,存储过程的第二个参数是字符串
cStmt.registerOutParameter(2,Type.VARCHAR) ; // 执行存储过程 // 获取存储过程的返回结果
Sout(cStmt.getString(2)) ;

15天第8个视频,删除表的时候,老方说,防止下一期班再用这个表;

然后又突然说,没有下一期班了,你们是最后一期班了,以后不讲课了;以后专职做管理去了,下面人说,升官了….;老方说,什么啊。。

(十八)JDBC获取存储过程和主键的更多相关文章

  1. JDBC获取表的主键

    JDBC获取表的主键 案例,创建订单,并根据订单号向订单明细表插入数据 sql语句: 创建两表 create table orders(  id number(4) primary key,  cus ...

  2. mybatis执行insert后马上能获取自增主键的语句写法

    <!--keyColumn keyProperty useGeneratedKeys 用于在插入数据后,能直接使用user.getId()获取主键--> <insert id=&qu ...

  3. Spring中获取数据库表主键序列

    在程序开发中,我们经常有写数据库表的操作,数据表中经常带有主键自增序列,如何获取自增序列.spring中提供了相应的类 DataFieldMaxValueIncrementer. DataFieldM ...

  4. mybatis 添加事物后 无法获取自增主键的问题

    检查代码后没发现mapper文件设置自增主键返回的问题,后来检查到,关闭事务后,执行完是可以获取返回的主键的, 我在mysql的客户端里关闭自动提交,发现使用select last_insert_id ...

  5. MYSQL获取自增主键【4种方法】

    通常我们在应用中对mysql执行了insert操作后,需要获取插入记录的自增主键.本文将介绍java环境下的4种方法获取insert后的记录主键auto_increment的值: 通过JDBC2.0提 ...

  6. mybatis框架(6)---mybatis插入数据后获取自增主键

    mybatis插入数据后获取自增主键 首先理解这就话的意思:就是在往数据库表中插入一条数据的同时,返回该条数据在数据库表中的自增主键值. 有什么用呢,举个例子: 你编辑一条新闻,同时需要给该新闻打上标 ...

  7. MyBatis映射文件1(增删改、insert获取自增主键值)

    增删改 Mybatis为我们提供了<insert>.<update>.<delete>标签来对应增删改操作 在接口中写增删改的抽象方法 void addEmp(Em ...

  8. MYSQL获取自增主键【4种方法】(转)

    转自:http://blog.csdn.net/ultrani/article/details/9351573 作者已经写的非常好了,我不废话了,直接转载收藏: 通常我们在应用中对mysql执行了in ...

  9. 深入分析Mybatis 使用useGeneratedKeys获取自增主键

    摘要 我们经常使用useGenerateKeys来返回自增主键,避免多一次查询.也会经常使用on duplicate key update,来进行insertOrUpdate,来避免先query 在i ...

随机推荐

  1. maven-jetty插件配置时,webdefault.xml的取得和修改

    取得 没必要去下载一个jetty客户端去找webdefault.xml了. 可以去maven的本地仓库找到 \org\eclipse\jetty\jetty-webapp\版本号\ 里面的jar文件, ...

  2. 启动Docker后台容器,测试运行Hello-world

    1.使用docker run hello-world命令运行测试hello-world镜像,如下: 2.run 命令都干了什么?如下图: 3.为什么Docker比vm快?

  3. JAVA基础知识|抽象类与接口类

    一.抽象类 抽象类:拥有抽象方法的类就是抽象类,抽象类要使用abstract声明 抽象方法:没有方法体的方法,必须要使用abstract修饰 为什么要使用抽象类,抽象方法? 举例来说,如果你定义了一个 ...

  4. Mac 下 brew的卸载 插件

    brew 又叫 Homebrew,是 Mac OSX 上的软件包管理工具,能在 Mac 命令行中方便的安装软件或者卸载软件, 只需要一个命令, 非常方便 brew 类似 ubuntu 系统下的 apt ...

  5. Vagrant 如何调整虚拟机的内存大小?

    https://docs.vagrantup.com/v2/virtualbox/configuration.html 最下面 config.vm.provider "virtualbox& ...

  6. mysql安装到启动遇见的问题

    一.有时候安装mysql后使用mysql命令时报错 Can't connect to MySQL server on localhost (10061),或者用net start mysql 时报服务 ...

  7. [转][echarts]地图轮播

    代码片断: 来自:https://blog.csdn.net/qq_36947128/article/details/90899564 function Play(){ chart.dispatchA ...

  8. kotlin中接口

    使用interface关键字声明,一个类可以多实现,实现方法与类继承相同 接口中的属性和方法都是open的 package loaderman.demo interface myInterface{ ...

  9. CentOS7做ssh免密登录

    (1)实验环境 两台CentOS7: youxi1 192.168.1.6 youxi2 192.168.1.7 这里我将防火墙关闭进行实验,如果防火墙开启,请将端口加入到防火墙规则中. (2).目标 ...

  10. jExcelAPI 操作 Excel 文件

    在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一点.但jExcelAPI对中文支持非常好,API是纯Java的, 并不 依赖Wind ...