欢迎来到天天文库
浏览记录
ID:26727690
大小:379.17 KB
页数:23页
时间:2018-11-28
《传智播客jdbc2方立勋》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、JDBC开发讲师:方立勋北京传智播客教育www.itcast.cnTip:使用JDBC处理大数据在实际开发中,程序需要把大文本或二进制数据保存到数据库。基本概念:大数据也称之为LOB(LargeObjects),LOB又分为:clob和blobclob用于存储大文本。blob用于存储二进制数据,例如图像、声音、二进制文等。对MySQL而言只有blob,而没有clob,mysql存储大文本采用的是Text,Text和blob分别又分为:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXTTINYBLOB、BLOB、MEDIUMBLOB和L
2、ONGBLOB北京传智播客教育www.itcast.cnTip:使用JDBC处理大文本对于MySQL中的Text类型,可调用如下方法设置:PreparedStatement.setCharacterStream(index,reader,length);//注意length长度须设置,并且设置为int型对MySQL中的Text类型,可调用如下方法获取:reader=resultSet.getCharacterStream(i);reader=resultSet.getClob(i).getCharacterStream();strings=resul
3、tSet.getString(i);北京传智播客教育www.itcast.cnTip:使用JDBC处理二进制数据对于MySQL中的BLOB类型,可调用如下方法设置:PreparedStatement.setBinaryStream(i,inputStream,length);对MySQL中的BLOB类型,可调用如下方法获取:InputStreamin=resultSet.getBinaryStream(i);InputStreamin=resultSet.getBlob(i).getBinaryStream();北京传智播客教育www.itcast.
4、cnTip:Oracle中大数据处理Oracle定义了一个BLOB字段用于保存二进制数据,但这个字段并不能存放真正的二进制数据,只能向这个字段存一个指针,然后把数据放到指针所指向的Oracle的LOB段中,LOB段是在数据库内部表的一部分。因而在操作Oracle的Blob之前,必须获得指针(定位器)才能进行Blob数据的读取和写入。如何获得表中的Blob指针呢?可以先使用insert语句向表中插入一个空的blob(调用oracle的函数empty_blob()),这将创建一个blob的指针,然后再把这个empty的blob的指针查询出来,这样就可得到
5、BLOB对象,从而读写blob数据了。北京传智播客教育www.itcast.cnTip:Oracle中LOB类型的处理1、插入空blobinsertintotest(id,image)values(?,empty_blob());2、获得blob的cursorselectimagefromtestwhereid=?forupdate;Blobb=rs.getBlob(“image”);注意:须加forupdate,锁定该行,直至该行被修改完毕,保证不产生并发冲突。3、利用io,和获取到的cursor往数据库读写数据注意:以上操作需开启事务。北京
6、传智播客教育www.itcast.cnTip:使用JDBC进行批处理业务场景:当需要向数据库发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率。实现批处理有两种方式,第一种方式:Statement.addBatch(sql)执行批处理SQL语句executeBatch()方法:执行批处理命令clearBatch()方法:清除批处理命令北京传智播客教育www.itcast.cnTip:使用JDBC进行批处理Connectionconn=null;Statementst=null;ResultSetrs
7、=null;try{conn=JdbcUtil.getConnection();Stringsql1="insertintouser(name,password,email,birthday)values('kkk','123','abc@sina.com','1978-08-08')";Stringsql2="updateusersetpassword='123456'whereid=3";st=conn.createStatement();st.addBatch(sql1);//把SQL语句加入到批命令中st.addBatch(sql2);//把
8、SQL语句加入到批命令中st.executeBatch();}finally{JdbcUtil.free(c
此文档下载收益归作者所有