jdbc执行预处理,批处理,LOB字段处理,调用存储过程
(1)jdbc执行预处理
PreparedStatment预备语句
eg:String sql="insert into user(id,name,birthday,money) values(5,'administrator',?,'1000000')";
PreparedStatement stmt=conn.prepareStatment(sql);
stmt.setTimestamp(1,new Timestamp(System.currentTimeMillis()));
stmt.execute();
(2)调用存储过程
对于标量函数 其调用字符串为{fn functionname(?,?)}/{fn functionname()}
对于存储过程 其调用字符串为{call proc(?,?)}/{call proc}/{call ?=proc(?,?)}
CallableStatement
无参数,无返回值的存储过程
String sql="{call test1()}";
CallableStatment stmt=conn.prepareCall(sql);
stmt.executeUpdate();
有参数,有返回值的存储过程
String sql="{call ?=test1(?)}"; //方式1
CallableStatment stmt=conn.prepareCall(sql);
stmt.setString(2,"test");
stmt.registerOutParameter(1,Type.Interger);
stmt.execute();
int result=stmt.getInt(1);
String sql="{call test1(?,?)}"; //方式2
CallableStatment stmt=conn.prepareCall(sql);
stmt.setString(1,"test");
stmt.registerOutParameter(2,Type.Interger);
stmt.execute();
int result=stmt.getInt(2);
(3)jdbc数据批处理
String sql="insert into user(id,name,birthday,money) values(?,?,?,?)";
PreparedStatement stmt=conn.prepareStatement(sql);
for (int i=1;i<1000;i++){
stmt.setInt(1,i);
stmt.setString(2,"test");
stmt.setDate(3,new Date(System.currentTimeMillis()));
stmt.setFloat(4,1000);
stmt.addBatch(sql);
}
int[] result=stmt.executeBatch();
(4)LOB字段(BLOB,CLOB)处理
处理常用类与方法
java.sql.ResultSet
Blob getBlob(int columnIndex);
Blob getBlob(string columnLabel);
Clob getClob(int columnIndex);
Clob getClob(string columnLabel);
-----------------------------------------------------------------
java.sql.Blob
long length();
byte[] getBytes(long startPosition,long length);
InputStream getBinaryStream();
InputStream getBinaryStream(long startPosition,long length);
OutputStream setBinaryStream(long startPosition);
java.sql.Clob
long length();
byte[] getSubString(long startPosition,long length);
Reader getCharacterStream();
Reader getCharacterStream(long startPosition,long length);
Writer setCharacterStream(long startPosition);
-----------------------------------------------------------------
java.sql.Connection
Blob createBlob();
Clob createClob();
----------------------------------------------------------------
eg:
PreparedStament stmt=conn.prepareStatement("select pic from book where bokkid='1'");
ResultSet rt=stmt.executeQuery();
if(rt.next()){
Blob blob=rt.getBlob(1);
Image img=ImageIO.read(blob.getInputStream());
}
--------------------------------------------------------------------------------------------
Blob blob=conn.createBlob();
int offset=0;
OutputStream out=blob.setBinaryStream(offset);
ImageIO.write(img,"PNG",out);
PreparedStament stmt=conn.prepareStatement("insert into book values(?,?)");
stmt.setInt(1,1);
stmt.setBlob(2,blob);
stmt.executeUpdate();
--------------------------------------------------------------------------------------------
PreparedStament stmt=conn.prepareStatement("insert into book values(?,?)");
stmt.setInt(1,1);
File file=new File("E:\\text.txt");
FileReader reader=new FileReader(file);
BufferReader buffer=new BufferReader(reader);
stmt.setCharacterStream(2,buffer,3);
stmt.execute();
--------------------------------------------------------------------------------------------
PreparedStament stmt=conn.prepareStatement("select pic from book where id=1");
ResuleSet rs=stmt.exexcuteQuery();
if(rs.next()){
String strTmp="";
Reader read=rs.getCharacterStream(1);
BufferReader br=new BufferReader(read);
File file=new File("E:\\text.txt");
FileWriter fw=new FileWriter(f);
BufferWriter bw=new BufferWriter(fw);
while((strTmp=br.readLine())!=null){
bw.writer(strTmp+"\n");
bw.flush();
}
bw.close();
fw.close();
br.close();
}
jdbc执行预处理,批处理,LOB字段处理,调用存储过程的更多相关文章
- ASP调用存储过程访问SQL Server
ASP调用存储过程访问SQL Server 2011-02-15 10:22:57 标签:asp 数据库 sQL 存储过程 Server ASP和存储过程(Stored Procedures)的文章 ...
- JDBC第二篇--【PreparedStatment、批处理、处理二进制、自动主键、调用存储过程、函数】
这是我JDBC的第一篇 http://blog.csdn.net/hon_3y/article/details/53535798 1.PreparedStatement对象 PreparedState ...
- JDBC【PreparedStatment、批处理、处理二进制、自动主键、调用存储过程、函数】
1.PreparedStatement对象 PreparedStatement对象继承Statement对象,它比Statement对象更强大,使用起来更简单 Statement对象编译SQL语句时, ...
- 【转载】JDBC操作LOB字段
转自:http://www.cnblogs.com/tengtao93/p/4984689.html 1.LOB(Large Objects)大对象,是用来存储大量的二进制和文本数据的一种数据类型(一 ...
- JDBC 学习笔记(二)—— 大数据+存储过程+批处理+事务管理
本文目录: 1.使用JDBC处理大数据 2.使用JDBC处理大文本 3.使用JDBC处理二进制数据 4.Oracle中大数据处理 5 ...
- Java数据库连接——JDBC调用存储过程,事务管理和高级应用
一.JDBC常用的API深入详解及存储过程的调用 相关链接:Jdbc调用存储过程 1.存储过程(Stored Procedure)的介绍 我们常用的操作数据库语言SQL语句在执行的时候需要先编译,然后 ...
- Java数据库连接--JDBC调用存储过程,事务管理和高级应用
相关链接:Jdbc调用存储过程 一.JDBC常用的API深入详解及存储过程的调用 1.存储过程的介绍 我们常用的操作数据库语言SQL语句在执行的时候要先进行编译,然后执行,而存储过程是在大型数据库系统 ...
- 【Java EE 学习 29 下】【JDBC编程中操作Oracle数据库】【调用存储过程的方法】
疑问:怎样判断存储过程执行之后返回值是否为空. 一.连接oracle数据库 1.需要的jar包:在安装的oracle中就有,所以不需要到官网下载,我的oracle11g下:D:\app\kdyzm\p ...
- varchar2_to_blob,应用向数据库更新LOB字段时的超时问题
将字符串转换为BLOB类型数据,写入服务器. 1,首先利用to_clob函数把varchar2字段转成 clob字段. 2 利用c2b上面函数将clob转成blob. 即: c2b(to_clob( ...
随机推荐
- TLD目标跟踪算法
1. 简介 TLD目标跟踪算法是Tracking-Learning-Detection算法的简称.这个视频跟踪算法框架由英国萨里大学的一个捷克籍博士生Zdenek Kalal提出.TLD将传统的视频跟 ...
- Python notes
1. range()函数的使用: a = range(n) # a = range(0,n) b = range(m,n) # b = range(m,n) alist = list(a) # ali ...
- SublimeText2 快捷键一览表
SublimeText2 快捷键一览表 Sublime Text比起Notepad++,UltraEdit之类Code编辑器来说,其功能有过之而无不及,配合着各种插件使用,Sublime Text在实 ...
- 如何在页面进入时就加载js
页面一打开就执行JS的代码! onLoadwindow.onLoad=function(){}window.onload=function(){ } 补充:window.onload和doucumen ...
- Leetcode--Swap Nodes in Pairs
最傻的方法: ListNode *swapPairs(ListNode *head) { if (head == NULL) return NULL; ListNode *temp = ); List ...
- IIS发布网站出现“未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项。”的解决方法
未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项.试图加载格式不正确的程序. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈 ...
- MVC3 新建项目
一.安装工具 二.新建项目 step1:新建MVC3项目 打开新建项目窗口,在“已安装的模板”列表中选择“Web”,在右侧应用程序模板列表中选择“ASP.NET MVC3 Web应用程序”,修改项目名 ...
- C#中图片与BASE64码互相转换
//保存目录 string dir = "/upload/user/head"; //站点文件目录 string fileDir = HttpContext.Current.Ser ...
- 2015-01-16 .Net 中级软件工程师 笔试题
一 C#方面 1.请简述多线程需要考虑的主要因素 答:1.线程管理 同一核上的两个线程不会以两倍的时长完成,可能需要用两倍再加10 %左右的时间来完成.与一个线程相比较的话,三个线程在同一核上想占用1 ...
- PDF 补丁丁 0.5.0.2691 发布(替换字库新增字符映射功能)
新版本在替换 PDF 字体功能中增加了替换字符的功能. 某些 PDF 文档可能由于编码错误的问题,复制出来的文本是乱码. 对于这种文档,可以使用此功能将错误的编码映射到正确的字符上,从而实现修复文档的 ...