博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据的存储过程(通过预处理)
阅读量:5085 次
发布时间:2019-06-13

本文共 3126 字,大约阅读时间需要 10 分钟。

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

 

转载于:https://www.cnblogs.com/1314wamm/p/6044670.html

你可能感兴趣的文章
理解oracle中连接和会话
查看>>
两种最常用的Sticky footer布局方式
查看>>
Scrapy实战篇(三)之爬取豆瓣电影短评
查看>>
HDU 5510 Bazinga KMP
查看>>
[13年迁移]Firefox下margin-top问题
查看>>
Zookeeper常用命令 (转)
查看>>
Java程序IP v6与IP v4的设置
查看>>
RUP(Rational Unified Process),统一软件开发过程
查看>>
数据库链路创建方法
查看>>
Enterprise Library - Data Access Application Block 6.0.1304
查看>>
重构代码 —— 函数即变量(Replace temp with Query)
查看>>
Bootstrap栅格学习
查看>>
程序员的数学
查看>>
聚合与组合
查看>>
jQuery如何获得select选中的值?input单选radio选中的值
查看>>
设计模式 之 享元模式
查看>>
如何理解汉诺塔
查看>>
洛谷 P2089 烤鸡【DFS递归/10重枚举】
查看>>
15 FFT及其框图实现
查看>>
Linux基本操作
查看>>