JDBC以及相关技术学习(五)----PreparedStatement特殊参数处理
来源:互联网 发布:无线网卡更改mac地址 编辑:程序博客网 时间:2024/06/05 16:13
PreparedStatement主要有三种特殊的参数,分别为日期类型、大文本流、字节流。
(1)日期类型
先上代码:
JDBCToolSingleTon jDBCToolSingleTon = JDBCToolSingleTon.getInstance();
Connection conn = jDBCToolSingleTon.getConnection();
String sql = "insert into UserInfo(name,birthday,account) values(?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS) ;//加上参数后,会自动返回主键
ps.setString(1, user.getName());
ps.setDate(2, new java.sql.Date( user.getBirthday().getTime()));//注意这里两个DATE需要转换
ps.setFloat(3, user.getAccount());
int i = ps.executeUpdate();
请看红色部分,ps.setDate参数类型为:java.sql.Date,但实际我们使用日期为java.util.date,两者需要互相转换才能使用,转换的方法也很简单,采用:
new java.sql.Date( java.util.Date对象的getTime() 方法 )
注意:java.sql.Date继承自java.util.Date,但多了两个方法,一个是将字符串转换为DATE,一个是将DATE转换为字符串。
(2)大文本流
注意,大文本流在SQL SERVER里面对应的是text类型
static void create(){
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try{
conn = JDBCToolSingleTon.getInstance().getConnection();
String sql = "insert into clob_test(big_text) values(?)";
ps = conn.prepareStatement(sql);
File file = new File("文本文件的所在路径");
Reader reader = new BufferedReader(new FileReader(file));
ps.setCharacterStream(1, reader,(int)file.length());
int i = ps.executeUpdate();
reader.close();
JDBCToolSingleTon.getInstance().freeResource(conn, null, ps);}
catch(Throwable e){
e.printStackTrace();
}
}
public static void read() throws SQLException, IOException{
JDBCToolSingleTon jDBCToolSingleTon = JDBCToolSingleTon.getInstance();
Connection conn = jDBCToolSingleTon.getConnection();
Statement statement = conn.createStatement();
String sql = "select big_text from clob_test";
ResultSet resultSet = statement.executeQuery(sql);
while(resultSet.next()){
Clob clob = resultSet.getClob(1);//在JAVA里面string没有限制,也可以直接GetString出来,SetString进去
File file = new File("新文件保存路径");//带缓存的IO操作
Writer writer = new BufferedWriter(new FileWriter(file));
Reader reader = clob.getCharacterStream();
char[] buff = new char[1024];
for(int i = 0; (i=reader.read(buff))>0;){
writer.write(buff, 0, i);
}
writer.close();
reader.close();
}
jDBCToolSingleTon.freeResource(conn, resultSet, statement);
}
(3)字节流
注意:字节流在SQL SERVER里面对应的是Image类型
static void create(){
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try{
conn = JDBCToolSingleTon.getInstance().getConnection();
String sql = "insert into blob_test(big_bit) values(?)";
ps = conn.prepareStatement(sql);
File file = new File("文件所在路径");
InputStream in = new BufferedInputStream(new FileInputStream(file));
ps.setBinaryStream(1, in, (int)file.length());
int i = ps.executeUpdate();
in.close();
JDBCToolSingleTon.getInstance().freeResource(conn, null, ps);}
catch(Throwable e){
e.printStackTrace();
}
}
public static void read() throws SQLException, IOException{
JDBCToolSingleTon jDBCToolSingleTon = JDBCToolSingleTon.getInstance();
Connection conn = jDBCToolSingleTon.getConnection();
Statement statement = conn.createStatement();
String sql = "select big_bit from blob_test";
ResultSet resultSet = statement.executeQuery(sql);
while(resultSet.next()){
File file = new File("文件所在路径");
OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(file));
InputStream inputStream = resultSet.getBinaryStream(1);
byte[] buff = new byte[1024];
for(int i = 0; (i=inputStream.read(buff))>0;){
outputStream.write(buff, 0, i);
}
outputStream.close();
inputStream.close();
}
jDBCToolSingleTon.freeResource(conn, resultSet, statement);
}
- JDBC以及相关技术学习(五)----PreparedStatement特殊参数处理
- JDBC以及相关技术学习(六)----批量SQL处理
- JDBC以及相关技术学习(一)----第一个JDBC程序
- JDBC以及相关技术学习(八)----JDBC元数据
- 【学习摘记】马士兵JDBC技术_课时10_JDBC处理PreparedStatement
- JDBC处理PreparedStatement
- 五、JDBC——PreparedStatement
- JDBC以及相关技术学习(二)----把JDBC获取连接封装成一个工具类
- sh命令行参数处理以及特殊变量
- JDBC PreparedStatement 处理区间查询
- JDBC学习之二PreparedStatement
- JDBC学习之路-PreparedStatement
- JDBC以及相关技术学习(三)----运载查询结果的利器ResultSet
- JDBC以及相关技术学习(四)----运载SQL进行查询交通工具Statement
- JDBC以及相关技术学习(七)----事务机制与保存点
- JDBC以及相关技术学习(九)----简单的连接池实现
- JDBC以及相关技术学习(十)----拦截Connection的close方法
- 预编译PreparedStatement以及jdbc缺点
- java,工厂方法种类(2)
- android系统中wifi省电模式下的四个基本概念:TIM、DTIM、Beacon-Interval、Listen-Interval
- SQL 左外连接,右外连接,全连接,内连接
- ARM平台建立JFFS2根文件系统
- window.XMLHttpRequest详解(AJAX工作原理)
- JDBC以及相关技术学习(五)----PreparedStatement特殊参数处理
- vmware workstation 9 rac vmx file setting . oifcfg
- 一名武汉大学毕业生的反思
- android布局基础及范例:人人android九宫格布局
- java 回文串判断
- hdu 1066 Last non-zero Digit in N!
- Java学习历程(一点学习笔记)
- win7安装
- 使用Qt Quick创建你的塞班手机程序(二)