批处理和存储过程
来源:互联网 发布:广州大塘附近淘宝培训 编辑:程序博客网 时间:2024/06/10 05:53
批处理:一次执行多条sql语句
package com.heima.jdbc;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.Statement;import java.util.Date;import org.junit.Test;import com.heima.utils.JdbcUtils;public class BatchTest {// 通过Statement命令对象演示一个插入3条记录@Testpublic void testStatement() throws Exception {// 获得链接对象Connection conn = JdbcUtils.getConnection();// 创建预处理命令对象Statement stmt = conn.createStatement();String sql1 = "insert into t3 values(1,'令狐冲',20)";String sql2 = "insert into t3 values(2,'杨过',23)";String sql3 = "insert into t3 values(3,'乔峰',24)";// 将三条sql语句一起放入stmt对象中,一起发送到服务执行,在DBMS中会编译成一个逻辑执行单元,所以速度会更快一些stmt.addBatch(sql1);stmt.addBatch(sql2);stmt.addBatch(sql3);// 执行sql语句stmt.executeBatch();// 释放资源JdbcUtils.release(null, stmt, conn);}// 通过PreparedStatement对象插入三条数据@Testpublic void testPreparedStatement() throws Exception {// 获得链接对象Connection conn = JdbcUtils.getConnection();// 创建预处理命令对象PreparedStatement pstmt = conn.prepareStatement("insert into t3 values(?,?,?)");// 指定?的值pstmt.setInt(1, 4);pstmt.setString(2, "黄蓉");pstmt.setInt(3, 18);pstmt.addBatch();// 指定?的值pstmt.setInt(1, 5);pstmt.setString(2, "小龙女");pstmt.setInt(3, 17);pstmt.addBatch();// 指定?的值pstmt.setInt(1, 6);pstmt.setString(2, "赵敏");pstmt.setInt(3, 18);pstmt.addBatch();// 执行sql语句pstmt.executeBatch();// 释放资源JdbcUtils.release(null, pstmt, conn);}// 通过PreparedStatement对象插入1000条数据@Testpublic void testPreparedStatement1() throws Exception {// 获得链接对象Connection conn = JdbcUtils.getConnection();System.out.println(new Date());// 创建预处理命令对象PreparedStatement pstmt = conn.prepareStatement("insert into t3 values(?,?,?)");for (int i = 0; i < 1000; i++) {// 指定?的值pstmt.setInt(1, i);pstmt.setString(2, "黄蓉" + i);pstmt.setInt(3, i);pstmt.addBatch();if(i%200 == 0){//执行sql语句pstmt.executeBatch() ;//一定要清空缓存pstmt.clearBatch() ;}}//为了防止缓存中还有sql没有执行,应当再次 执行sql语句pstmt.executeBatch();System.out.println(new Date());// 释放资源JdbcUtils.release(null, pstmt, conn);}}
相当于一个方法
在数据库中定义一个方法
返回值叫输出参数
DELIMITER && 用 DELIMITER 规定一个结束的标志(相当于分号)
CREATE PROCEDURE pro1()
begin
select * from stu;
end;
$$
调用:
call pro1()
$$
#无参的存储过程
delimiter $$
create procedure pro1()
begin
select * from stu ;
end ;
$$
#带输入参数的存储过程
create procedure pro2(in a int)
begin
select * from stu where id = a ;
end ;
$$
delimiter $$
create procedure pro3(in a int,in b int)
begin
select a + b ;
end ;
$$
delimiter ;
delimiter $$
create procedure pro4(in n int)
begin
select * from t3 where id = n ;
end ;
$$
delimiter ;
#创建带输出参数的存储过程
delimiter $$
create procedure pro5(in a int,out b varchar(20))
begin
select name into b from stu where id = a ;
end ;
$$
call pro5(1,@n) ;
select @n ;
#创建带多个输出参数的存储过程
delimiter $$
create procedure pro6(in a int,out b varchar(20),out c int)
begin
select name,age into b,c from stu where id = a ;
end ;
$$
select @name,@age $$
package com.heima.jdbc;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.Types;import org.junit.Test;import com.heima.utils.JdbcUtils;//演示JDBC调用存储过程public class ProcedureTest {//执行不带返回值的存储过程没有任何任意@Testpublic void testPro2() throws Exception {// 获得链接对象Connection conn = JdbcUtils.getConnection();// 创建执行存储过程的命令对象CallableStatement cstmt = conn.prepareCall("{call pro2(?)}") ;//指定?的值cstmt.setInt(1, 1) ;//执行存储过程cstmt.execute() ;// 释放资源JdbcUtils.release(null, cstmt, conn);}@Testpublic void testPro5() throws Exception {// 获得链接对象Connection conn = JdbcUtils.getConnection();// 创建执行存储过程的命令对象CallableStatement cstmt = conn.prepareCall("{call pro5(?,?)}") ;//指定?的值cstmt.setInt(1, 1) ;//指定第二个?是输出参数cstmt.registerOutParameter(2, Types.VARCHAR) ;//执行存储过程cstmt.execute() ;//获得返回值String name = cstmt.getString(2) ;System.out.println(name);// 释放资源JdbcUtils.release(null, cstmt, conn);}}
- 批处理和存储过程
- 批处理,主键,存储过程和事务
- JDBC(4):批处理、存储过程和事务
- 批处理调用存储过程
- 存储过程(批处理sql)
- JDBC存储过程、批处理、事务
- 利用批处理命令调用存储过程
- JDBC之批处理、事务、存储过程
- Java-JDBC调用批处理、存储过程、事务
- Java-JDBC调用批处理、存储过程、事务
- Java-JDBC调用批处理、存储过程、事务
- 传智播客 JDBC基础之存储过程与批处理
- 初学JDBC__第五节(调用存储过程&&批处理)
- jdbc_分页查询,大数据,批处理,存储过程
- Oracle存储过程调用bat批处理脚本程序
- 存储过程和存储函数
- 存储函数和存储过程
- 存储过程和存储函数
- 115. cURL 简介(1)
- poj 1584 A Round Peg in a Ground Hole
- Java IO流
- Unity人物残影实现
- java 中try{}catch(){}finally{}的具体执行顺序+代码测试
- 批处理和存储过程
- 初入spring源码--浅谈核心
- Namespace declaration statement has to be the very first statement in the script
- 1027. 打印沙漏(20) PAT 乙级
- 安全退出调用多个Activity的Application
- 根据缓存服务器或域名来分隔缓存
- java集合类
- M101P: MongoDB for Developers - Chapter 3: Schema Design
- _轻量级ios数据沙盒存储