jdbc连接oracle数据库 调用存储过程 增加大数据类型等操作
mhr18 2024-09-13 20:40 36 浏览 0 评论
由于头条不好发代码,有兴趣的朋友可直接打开电脑eclipse,把一下代码复制即可运行.建表语句在最后.
/**
* @author liandyao
* @date 2017-7-27
*/
public class OracleJdbc {
//连接oracle
public static Connection getCon(){
Connection con =null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "liandyao";
String password = "123";
try {
con = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
}
/**
* @param args
*/
public static void main(String[] args) {
//add();
//callPro();
//addUser();
getUser();
}
//批量添加数据
public static void add(){
Connection con = getCon();
PreparedStatement pstm = null;
String sql = "insert into TEMPS values (?)";
try {
pstm = con.prepareStatement(sql);
for(int i=0;i<1000;i++){
pstm.setInt(1, i);
pstm.addBatch();
}
pstm.executeBatch();
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
pstm.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* jdbc中使用存储过程
*/
public static void callPro(){
Connection con = getCon();
CallableStatement cast = null;
String sql = "{call pro_getemp(?,?,?)}";
try {
cast = con.prepareCall(sql);
cast.setInt(1, 10);//第一个参数
//注册第二个参数,数字型
cast.registerOutParameter(2, java.sql.Types.INTEGER);
//注册第三个参数,游标类型
cast.registerOutParameter(3, oracle.jdbc.OracleTypes.CURSOR);
cast.execute();//执行存储过程
int count = cast.getInt(2);//取出第二个输出参数
ResultSet rs = (ResultSet) cast.getObject(3);//第三个参数
System.out.println("部门下有:"+count+"人");
while(rs.next()){
String name = rs.getString("ename");
double sal = rs.getDouble("sal");
System.out.println("name"+name+" sal:"+sal);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
cast.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//增加大数据类型
public static void addUser(){
Connection con = getCon();
String sql = "insert into t_user values(?,?,?,?)";
try {
PreparedStatement pstm = con.prepareStatement(sql);
pstm.setInt(1, 1);
pstm.setString(2, "高圆圆");
//Reader rd = new FileReader("E:\\05java\\01workspace\\t219\\oracle\\src\\gyy.txt");
InputStream in = OracleJdbc.class.getClassLoader().getResourceAsStream("gyy.txt");
Reader rd = new InputStreamReader(in);//将字节流转换为字符流
pstm.setClob(3,rd);
//pstm.setString(3, "sdsdsdsadsadsadsadsad");
InputStream is = OracleJdbc.class.getClassLoader().getResourceAsStream("gyy.jpg");
pstm.setBlob(4, is);
pstm.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally{
}
}
//取出大数据类型
public static void getUser(){
Connection con = getCon();
String sql = "select * from t_user";
try {
PreparedStatement pstm = con.prepareStatement(sql);
ResultSet rs = pstm.executeQuery();
while(rs.next()){
int id = rs.getInt("userid");
String name = rs.getString("username");
//Reader rd = rs.getCharacterStream("userexp");
String userexp = rs.getString("userexp");
InputStream is = rs.getBinaryStream("user_photo");
OutputStream os = new FileOutputStream("d:\\"+name+".jpg");
int len =0;
byte[] b= new byte[1024];
while((len=is.read(b))!=-1){
os.write(b, 0, len);
}
os.close();
is.close();
System.out.println(id+" "+name+" "+userexp+" ");
}
} catch (SQLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//表格
create table t_user(
userId number(10) primary key,
userName varchar2(100),
userExp clob, --字符型
user_photo blob --字节型
)
相关推荐
- 【预警通报】关于WebLogic存在远程代码执行高危漏洞的预警通报
-
近日,Oracle官方发布了2021年1月关键补丁更新公告CPU(CriticalPatchUpdate),共修复了包括CVE-2021-2109(WeblogicServer远程代码执行漏洞)...
- 医院信息系统突发应急演练记录(医院信息化应急演练)
-
信息系统突发事件应急预案演练记录演练内容信息系统突发事件应急预案演练参与人员信息科参与科室:全院各部门日期xxxx-xx-xx时间20:00至24:00地点信息科记录:xxx1、...
- 一文掌握怎么利用Shell+Python实现完美版的多数据源备份程序
-
简介:在当今数字化时代,无论是企业还是个人,数据的安全性和业务的连续性都是至关重要的。数据一旦丢失,可能会造成无法估量的损失。因此,如何有效地对分布在不同位置的数据进行备份,尤其是异地备份,成为了一个...
- docker搭建系统环境(docker搭建centos)
-
Docker安装(CentOS7)1.卸载旧版Docker#检查已安装版本yumlistinstalled|grepdocker#卸载旧版本yumremove-ydocker.x...
- 基础篇:数据库 SQL 入门教程(sql数据库入门书籍推荐)
-
SQL介绍什么是SQLSQL指结构化查询语言,是用于访问和处理数据库的标准的计算机语言。它使我们有能力访问数据库,可与多种数据库程序协同工作,如MSAccess、DB2、Informix、M...
- Java21杀手级新特性!3行代码性能翻倍
-
导语某券商系统用这招,交易延迟从12ms降到0.8ms!本文揭秘Oracle官方未公开的Record模式匹配+虚拟线程深度优化+向量API神操作,代码量直降70%!一、Record模式匹配(代码量↓8...
- 一文读懂JDK21的虚拟线程(java虚拟线程)
-
概述JDK21已于2023年9月19日发布,作为Oracle标准Java实现的一个LTS版本发布,发布了15想新特性,其中虚拟线程呼声较高。虚拟线程是JDK21中引入的一项重要特性,它是一种轻量级的...
- 效率!MacOS下超级好用的Linux虚拟工具:Lima
-
对于MacOS用户来说,搭建Linux虚拟环境一直是件让人头疼的事。无论是VirtualBox还是商业的VMware,都显得过于笨重且配置复杂。今天,我们要介绍一个轻巧方便的纯命令行Linux虚拟工具...
- 所谓SaaS(所谓三维目标一般都应包括)
-
2010年前后,一个科技媒体的主编写一些关于云计算的概念性问题,就可以作为头版头条了。那时候的云计算,更多的还停留在一些概念性的问题上。而基于云计算而生的SaaS更是“养在深闺人未识”,一度成为被IT...
- ORA-00600 「25027」 「x」报错(报错0xc0000001)
-
问题现象:在用到LOB大对象的业务中,进行数据的插入,失败了,在报警文件中报错:ORA-00600:内部错误代码,参数:[25027],[10],[0],[],[],[],[],[...
- 安卓7源码编译(安卓源码编译环境lunch失败,uname命令找不到)
-
前面已经下载好源码了,接下来是下载手机对应的二进制驱动执行编译源码命令下载厂商驱动https://developers.google.com/android/drivers?hl=zh-cn搜索NGI...
- 编译安卓源码(编译安卓源码 电脑配置)
-
前面已经下载好源码了,接下来是下载手机对应的二进制驱动执行编译源码命令下载厂商驱动https://developers.google.com/android/drivers?hl=zh-cn搜索NGI...
- 360 Vulcan Team首战告捷 以17.5万美金强势领跑2019“天府杯“
-
2019年11月16日,由360集团、百度、腾讯、阿里巴巴、清华大学与中科院等多家企业和研究机构在成都联合主办了2019“天府杯”国际网络安全大赛暨2019天府国际网络安全高峰论坛。而开幕当日最激荡人...
- Syslog 日志分析与异常检测技巧(syslog发送日志配置)
-
系统日志包含有助于分析网络设备整体运行状况的重要信息。然而,理解并从中提取有效数据往往颇具挑战。本文将详解从基础命令行工具到专业日志管理软件的全流程分析技巧,助你高效挖掘Syslog日志价值。Gr...
- 从Oracle演进看数据库技术的发展(从oracle演进看数据库技术的发展的过程)
-
数据库技术发展本质上是应用需求驱动与基础架构演进的双向奔赴,如何分析其技术发展的脉络和方向?考虑到oracle数据库仍然是这个领域的王者,以其为例,管中窥豹,对其从Oracle8i到23ai版本的核...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (74)
- oracle基目录 (50)
- oracle批量插入数据 (65)
- oracle事务隔离级别 (53)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)