数据的存储过程(通过预处理)
2016-11-08 21:10
357 查看
package cn.hncu;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.util.Scanner;
import java.util.UUID;
import javax.imageio.stream.FileImageInputStream;
import org.junit.Test;
import cn.hncu.pubs.ConnFactory;
//演示存储过程
public class JdbcDemo3 {
@Test//无参
public void callProcedureDemo() throws Exception{
Connection con = ConnFactory.getConn();
CallableStatement cs = con.prepareCall("call p1()"); //参数即是调用存储过程的sql语句;返回是CallableStatement对象,它也是Statement的子类
ResultSet rs = cs.executeQuery(); //如果存储过程中包含select,用executeQuery()
while( rs.next() ){
String name = rs.getString("name");
System.out.println(name);
}
}
@Test//有输入参数
public void callProcedureDemo2() throws Exception{
Connection con = ConnFactory.getConn();
//CallableStatement cs = con.prepareCall("call p2('P06','XYZ')"); //可以,但是参数写死了。如果要接收用户输入,则用占位符
CallableStatement cs = con.prepareCall("call p2(?,?)"); //用占位符写活
cs.setString(1, "P07");
cs.setString(2, "曹操");
ResultSet rs = cs.executeQuery(); //如果存储过程中包含select,用executeQuery()
while( rs.next() ){
String name = rs.getString("name");
System.out.println(name);
}
}
@Test//有输入、输出参数
public void callProcedureDemo3() throws Exception{
Connection con = ConnFactory.getConn();
CallableStatement cs = con.prepareCall("call p3(?,?,?)"); //用占位符写活
cs.setString(1, "P10");
cs.setString(2, "曹植2");
cs.registerOutParameter(3, Types.INTEGER);//指定第3个占位符是输出参数,为其指定数据类型
//cs.execute(); //OK
cs.executeUpdate(); //OK
int a = cs.getInt(3); //获取返回值
System.out.println("a:"+a);
}
}
--------------------------以下是 ConnFactory工厂类----------------------------------------
package cn.hncu.pubs;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;
public class ConnFactory {
private static Connection conn;
private ConnFactory(){
}
static{
try {
Properties p = new Properties();
p.load(ConnFactory.class.getClassLoader().getResourceAsStream("jdbc.properties"));//读取classpath下的资源文件
String driver = p.getProperty("driver");
String url = p.getProperty("url");
String name = p.getProperty("username");
String pwd = p.getProperty("password");
Class.forName(driver);
conn = DriverManager.getConnection(url, name, pwd);
System.out.println("获取连接:"+conn);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConn(){
return conn;
}
}
-------------------------------jdbc.perproties文件----------这个是写在跟src同目录下------------------------------------
##MySQL
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/hncu?useUnicode=true&characterEncoding=utf-8
username=root
password=1234
##Oracle
#driver=oracle.jdbc.driver.OracleDriver
#url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
#username=scott
#password=tiger
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.util.Scanner;
import java.util.UUID;
import javax.imageio.stream.FileImageInputStream;
import org.junit.Test;
import cn.hncu.pubs.ConnFactory;
//演示存储过程
public class JdbcDemo3 {
@Test//无参
public void callProcedureDemo() throws Exception{
Connection con = ConnFactory.getConn();
CallableStatement cs = con.prepareCall("call p1()"); //参数即是调用存储过程的sql语句;返回是CallableStatement对象,它也是Statement的子类
ResultSet rs = cs.executeQuery(); //如果存储过程中包含select,用executeQuery()
while( rs.next() ){
String name = rs.getString("name");
System.out.println(name);
}
}
@Test//有输入参数
public void callProcedureDemo2() throws Exception{
Connection con = ConnFactory.getConn();
//CallableStatement cs = con.prepareCall("call p2('P06','XYZ')"); //可以,但是参数写死了。如果要接收用户输入,则用占位符
CallableStatement cs = con.prepareCall("call p2(?,?)"); //用占位符写活
cs.setString(1, "P07");
cs.setString(2, "曹操");
ResultSet rs = cs.executeQuery(); //如果存储过程中包含select,用executeQuery()
while( rs.next() ){
String name = rs.getString("name");
System.out.println(name);
}
}
@Test//有输入、输出参数
public void callProcedureDemo3() throws Exception{
Connection con = ConnFactory.getConn();
CallableStatement cs = con.prepareCall("call p3(?,?,?)"); //用占位符写活
cs.setString(1, "P10");
cs.setString(2, "曹植2");
cs.registerOutParameter(3, Types.INTEGER);//指定第3个占位符是输出参数,为其指定数据类型
//cs.execute(); //OK
cs.executeUpdate(); //OK
int a = cs.getInt(3); //获取返回值
System.out.println("a:"+a);
}
}
--------------------------以下是 ConnFactory工厂类----------------------------------------
package cn.hncu.pubs;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;
public class ConnFactory {
private static Connection conn;
private ConnFactory(){
}
static{
try {
Properties p = new Properties();
p.load(ConnFactory.class.getClassLoader().getResourceAsStream("jdbc.properties"));//读取classpath下的资源文件
String driver = p.getProperty("driver");
String url = p.getProperty("url");
String name = p.getProperty("username");
String pwd = p.getProperty("password");
Class.forName(driver);
conn = DriverManager.getConnection(url, name, pwd);
System.out.println("获取连接:"+conn);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConn(){
return conn;
}
}
-------------------------------jdbc.perproties文件----------这个是写在跟src同目录下------------------------------------
##MySQL
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/hncu?useUnicode=true&characterEncoding=utf-8
username=root
password=1234
##Oracle
#driver=oracle.jdbc.driver.OracleDriver
#url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
#username=scott
#password=tiger
相关文章推荐
- 通过代码备份存储过程,package body 和表数据 并还原
- 存储过程建立临时表,通过游标增加数据
- 通过存储过程提单时进行数据校验,优先于预算控制
- 补MySQL第六天----Java中实现预处理、批处理、大数据字段与存储过程
- 通过WebService及存储过程等技术批量初始化系统组织数据
- 通过存储过程来进行数据绑定
- sql存储过程通过ID删除两表中的数据。
- MyCat 学习笔记 第十三篇.数据分片 之 通过HINT执行存储过程
- Java调用oracle存储过程通过游标返回临时表数据
- 客户端如何通过咏南中间件调用存储过程和数据分页查询和文件传输的演示
- 通过调用过程把图片文存储到数据
- MSSQL通过存储过程自动创建自定义数据表
- 通过存储过程来删除已造出大量的数据
- 通过存储过程来实现删除所有表的数据(清库)
- Oracle中通过存储过程,Function,触发器实现解析时间类型的字段并插入的对应的数据表中
- 通过名字查找数据库名的通用存储过程
- 调用存储过程取到数据通过NPOI存到Excel中
- Script:创建一个job,通过存储过程定期删除数据的脚本
- C#开发学习笔记:C#通过存储过程创建数据表
- sql 通过存储过程和自定义类型批量新增数据