(十八)JDBC获取存储过程和主键
2024-09-04 21:21:29
目录
获取数据库自动生成的主键;
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个视频,删除表的时候,老方说,防止下一期班再用这个表;
然后又突然说,没有下一期班了,你们是最后一期班了,以后不讲课了;以后专职做管理去了,下面人说,升官了….;老方说,什么啊。。
最新文章
- arcgis api for js入门开发系列二不同地图服务展示(含源代码)
- EasyUI 解决 datagrid 中 NumberBox 限制小数位数后不能输入小数点问题
- window.open
- Android开发学习——Android项目的目录结构
- Eclipse利用Maven2搭建SpringMVC框架的Web工程
- BPM 应用系统开发案例实战
- 学编程,学单词.....在学习中积累自己的单词(不断更新__ing)
- 使用sslsplit嗅探tls/ssl连接
- android js调试
- firefox os 2.1版本号UI接口方面有了质的飞跃
- 封装自己的Ajax框架
- 什么是TLB?
- OFBiz项目简介
- debug.keystare找不到的解决办法[转]
- ES6常用语法总结
- 【大数据】Spark-Hadoop-架构对比
- nginx 配置支持URL HTML5 History 模式 与 设置代理
- HTML的常用总结
- spring答题
- 1. java获取本周日-本周六的时间
热门文章
- 数据结构实验之数组二:稀疏矩阵(SDUT 3348)
- hive安装运行hive报错通解
- codeforces gym #101987K -TV ShowGame(2-SAT)
- Hdu5762
- Servlet中接收和返回数据
- mybatis+mysql批量插入和批量更新、存在及更新
- java经典算法题50道
- mysql 误删除所有用户或者忘记root密码
- spring项目启动错误——java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
- SQL-W3School-高级:SQL Date 函数