怎样提取blobc 数据类型型中的信息

Java从数据库中读取Blob对象图片并显示的方法
作者:Benjamin_whx
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Java从数据库中读取Blob对象图片并显示的方法,实例分析了Java读取数据库中Blob对象图片的技巧与操作方法,需要的朋友可以参考下
本文实例讲述了Java从数据库中读取Blob对象图片并显示的方法。分享给大家供大家参考。具体实现方法如下:
第一种方法:
大致方法就是,从数据库中读出Blob的流来,写到页面中去:
代码如下:Connection conn = DBManager.getConnection();
& String sql = "SELECT picture FROM teacher WHERE id=1";
& PreparedStatement ps =
& ResultSet rs =
& InputStream is =
& OutputStream os =
&& ps = conn.prepareStatement(sql);
&& rs = ps.executeQuery();
&& if(rs.next()){
&&& is = rs.getBinaryStream(1);
&& response.setContentType("text/html");
&& os = response.getOutputStream();
&& byte buf[] = new byte[1024];
&& while(&& (num=is.read(buf))!=-1&& ){
&&& os.write(buf, 0, num);
& } catch (SQLException e) {
&& e.printStackTrace();
&& is.close();
&& os.close();
&& rs.close();
&& ps.close();
& } catch (SQLException e) {
&& e.printStackTrace();
在页面中:
代码如下:&%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
&img name="pic" src="&%=basePath+"servlet/DownloadAsStream"%&"/&
第二种方法:
整个流程分为四步,连接oracle数据库 -& 读取blob图片字段 -& 对图片进行缩放 -&把图片展示在jsp页面上。
代码如下:import java.sql.*;
import java.io.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedI
import java.awt.image.AffineTransformOp;
import java.awt.geom.AffineT
public class OracleQueryBean {
&&& private final String oracleDriverName = "oracle.jdbc.driver.OracleDriver";
&&& private Connection myConnection =
&&& private String strTabN
&&& private String strIDN
&&& private String strImgN
&&& public OracleQueryBean(){
&&&&&&& try{
&&&&&&&&&&& Class.forName(oracleDriverName);
&&&&&&& }catch(ClassNotFoundException ex){
&&&&&&&&&&& System.out.println("加载jdbc驱动失败,原因:" + ex.getMessage());
&&& public Connection getConnection(){
&&&&&&& try{
&&&&&&& //用户名+密码; 以下使用的Test就是Oracle里的表空间
&&&&&&& //从配置文件中读取数据库信息
&&&&&&& GetPara oGetPara = new GetPara();
&&&&&&& String strIP = oGetPara.getPara("serverip");
&&&&&&& String strPort = oGetPara.getPara("port");
&&&&&&& String strDBName = oGetPara.getPara("dbname");
&&&&&&& String strUser = oGetPara.getPara("user");
&&&&&&& String strPassword = oGetPara.getPara("password");
&&&&&&& this.strTabName = oGetPara.getPara("tablename");
&&&&&&& this.strIDName = oGetPara.getPara("imgidname");
&&&&&&& this.strImgName = oGetPara.getPara("imgname");
&&&&&&& String oracleUrlToConnect ="jdbc:oracle:thin:@"+strIP+":"+strPort+":"+strDBN
&&&&&&&&&&& this.myConnection = DriverManager.getConnection(oracleUrlToConnect, strUser, strPassword);
&&&&&&& }catch(Exception ex){
&&&&&&&&&&& System.out.println("Can not get connection:" + ex.getMessage());
&&&&&&&&&&& System.out.println("请检测配置文件中的数据库信息是否正确." );
&&&&&&& return this.myC
2. 读取blob字段
在OracleQueryBean类中增加一个函数,来进行读取,具体代码如下:
代码如下:public byte[] GetImgByteById(String strID, int w, int h){
&&& //System.out.println("Get img data which id is " + nID);
&&& if(myConnection == null)
&&&&&&&& this.getConnection();
&&& byte[] data =
&&&&&&&&&&& Statement stmt = myConnection.createStatement();
&&&&&&&&&&& ResultSet myResultSet = stmt.executeQuery("select " + this.strIDName + " from " + this.strTabName + " where " + this.strIDName + "=" + strID);
&&&&&&&&&&
&&&&&&&&&&& StringBuffer myStringBuffer = new StringBuffer();
&&&&&&&&&&& if (myResultSet.next()) {
&&&&&&&&&&&&&&& java.sql.Blob blob = myResultSet.getBlob(this.strImgName);
&&&&&&&&&&&&&&& InputStream inStream = blob.getBinaryStream();
&&&&&&&&&&&&&&& try {
&&&&&&&&&&&&&&&&&&& long nLen = blob.length();
&&&&&&&&&&&&&&&&&&& int nSize = (int) nL
&&&&&&&&&&&&&&&&&&& //System.out.println("img data size is :" + nSize);
&&&&&&&&&&&&&&&&&&& data = new byte[nSize];
&&&&&&&&&&&&&&&&&&& inStream.read(data);
&&&&&&&&&&&&&&&&&&& inStream.close();
&&&&&&&&&&&&&&& } catch (IOException e) {
&&&&&&&&&&&&&&&&&&& System.out.println("获取图片数据失败,原因:" + e.getMessage());
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& data = ChangeImgSize(data, w, h);
&&&&&&&&&&& }
&&&&&&&&&&& System.out.println(myStringBuffer.toString());
&&&&&&&&&&& mit();
&&&&&&&&&&& myConnection.close();
&&&&&&& } catch (SQLException ex) {
&&&&&&&&&&& System.out.println(ex.getMessage());
3. 缩放图片
因为图片的大小可能不一致,但是在页面中输出的大小需要统一,所以需要
在OracleQueryBean类中增加一个函数,来进行缩放,具体代码如下:
代码如下:private byte[] ChangeImgSize(byte[] data, int nw, int nh){
&&& byte[] newdata =
&&&&&&&& BufferedImage bis = ImageIO.read(new ByteArrayInputStream(data));
&&&&&&&&&&& int w = bis.getWidth();
&&&&&&&&&&& int h = bis.getHeight();
&&&&&&&&&&& double sx = (double) nw /
&&&&&&&&&&& double sy = (double) nh /
&&&&&&&&&&& AffineTransform transform = new AffineTransform();
&&&&&&&&&&& transform.setToScale(sx, sy);
&&&&&&&&&&& AffineTransformOp ato = new AffineTransformOp(transform, null);
&&&&&&&&&&& //原始颜色
&&&&&&&&&&& BufferedImage bid = new BufferedImage(nw, nh, BufferedImage.TYPE_3BYTE_BGR);
&&&&&&&&&&& ato.filter(bis, bid);
&&&&&&&&&&
&&&&&&&&&&& //转换成byte字节
&&&&&&&&&&& ByteArrayOutputStream baos = new ByteArrayOutputStream();
&&&&&&&&&&& ImageIO.write(bid, "jpeg", baos);
&&&&&&&&&&& newdata = baos.toByteArray();
&&&&&&&&&&
&&& }catch(IOException e){
&&&&&&&& e.printStackTrace();
4. 展示在页面
页面使用OracleQueryBean来根据用户提供的图片id进行查询,在读取并进行缩放后,通过jsp页面进行展示,具体代码如下:
代码如下:&%@ page language="java" contentType="text/;charset=gbk" %&
&jsp:useBean id="OrcleQuery" scope="page" class="HLFtiDemo.OracleQueryBean" /&
&&& response.setContentType("image/jpeg");
&&& //图片在数据库中的 ID
&&& String strID = request.getParameter("id");
&&& //要缩略或放大图片的宽度
&&& String strWidth = request.getParameter("w");
&&& //要缩略或放大图片的高度
&&& String strHeight = request.getParameter("h");
&&& byte[] data =
&&& if(strID != null){
&&&&&&& int nWith = Integer.parseInt(strWidth);
&&&&&&& int nHeight = Integer.parseInt(strHeight);
&&&&&&& //获取图片的byte数据
&&&&&&& data = OrcleQuery.GetImgByteById(strID, nWith, nHeight);
&&&&&&& ServletOutputStream op = response.getOutputStream();&&&&&&
&&&&&& op.write(data, 0, data.length);
&&&&&& op.close();
&&&&&& op =
&&&&&&& response.flushBuffer();
&&&&&&& //清除输出流,防止释放时被捕获异常
&&&&&&& out.clear();
&&&&&&& out = pageContext.pushBody();
5. OracleQueryBean查询类的整体代码
OracleQueryBean.java文件代码如下所示:
代码如下:import java.sql.*;
import java.io.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedI
import java.awt.image.AffineTransformOp;
import java.awt.geom.AffineT
public class OracleQueryBean {
&&& private final String oracleDriverName = "oracle.jdbc.driver.OracleDriver";
&&& private Connection myConnection =
&&& private String strTabN
&&& private String strIDN
&&& private String strImgN
&&& public OracleQueryBean(){
&&&&&&& try{
&&&&&&&&&&& Class.forName(oracleDriverName);
&&&&&&& }catch(ClassNotFoundException ex){
&&&&&&&&&&& System.out.println("加载jdbc驱动失败,原因:" + ex.getMessage());
&&& public Connection getConnection(){
&&&&&&& try{
&&&&&&& //用户名+密码; 以下使用的Test就是Oracle里的表空间
&&&&&&& //从配置文件中读取数据库信息
&&&&&&& GetPara oGetPara = new GetPara();
&&&&&&& String strIP = oGetPara.getPara("serverip");
&&&&&&& String strPort = oGetPara.getPara("port");
&&&&&&& String strDBName = oGetPara.getPara("dbname");
&&&&&&& String strUser = oGetPara.getPara("user");
&&&&&&& String strPassword = oGetPara.getPara("password");
&&&&&&& this.strTabName = oGetPara.getPara("tablename");
&&&&&&& this.strIDName = oGetPara.getPara("imgidname");
&&&&&&& this.strImgName = oGetPara.getPara("imgname");
&&&&&&& String oracleUrlToConnect ="jdbc:oracle:thin:@"+strIP+":"+strPort+":"+strDBN
&&&&&&&&&&& this.myConnection = DriverManager.getConnection(oracleUrlToConnect, strUser, strPassword);
&&&&&&& }catch(Exception ex){
&&&&&&&&&&& System.out.println("Can not get connection:" + ex.getMessage());
&&&&&&&&&&& System.out.println("请检测配置文件中的数据库信息是否正确." );
&&&&&&& return this.myC
&&& public byte[] GetImgByteById(String strID, int w, int h){
&&& //System.out.println("Get img data which id is " + nID);
&&& if(myConnection == null)
&&&&&&&& this.getConnection();
&&& byte[] data =
&&&&&&&&&&& Statement stmt = myConnection.createStatement();
&&&&&&&&&&& ResultSet myResultSet = stmt.executeQuery("select " + this.strIDName + " from " + this.strTabName + " where " + this.strIDName + "=" + strID);
&&&&&&&&&&
&&&&&&&&&&& StringBuffer myStringBuffer = new StringBuffer();
&&&&&&&&&&& if (myResultSet.next()) {
&&&&&&&&&&&&&&& java.sql.Blob blob = myResultSet.getBlob(this.strImgName);
&&&&&&&&&&&&&&& InputStream inStream = blob.getBinaryStream();
&&&&&&&&&&&&&&& try {
&&&&&&&&&&&&&&&&&&& long nLen = blob.length();
&&&&&&&&&&&&&&&&&&& int nSize = (int) nL
&&&&&&&&&&&&&&&&&&& //System.out.println("img data size is :" + nSize);
&&&&&&&&&&&&&&&&&&& data = new byte[nSize];
&&&&&&&&&&&&&&&&&&& inStream.read(data);
&&&&&&&&&&&&&&&&&&& inStream.close();
&&&&&&&&&&&&&&& } catch (IOException e) {
&&&&&&&&&&&&&&&&&&& System.out.println("获取图片数据失败,原因:" + e.getMessage());
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& data = ChangeImgSize(data, w, h);
&&&&&&&&&&& }
&&&&&&&&&&& System.out.println(myStringBuffer.toString());
&&&&&&&&&&& mit();
&&&&&&&&&&& myConnection.close();
&&&&&&& } catch (SQLException ex) {
&&&&&&&&&&& System.out.println(ex.getMessage());
&&& public byte[] GetImgByteById(String strID){
&&& //System.out.println("Get img data which id is " + nID);
&&& if(myConnection == null)
&&&&&&&& this.getConnection();
&&& byte[] data =
&&&&&&&&&&& Statement stmt = myConnection.createStatement();
&&&&&&&&&&& ResultSet myResultSet = stmt.executeQuery("select " + this.strIDName + " from " + this.strTabName + " where " + this.strIDName + "=" + strID);
&&&&&&&&&&
&&&&&&&&&&& StringBuffer myStringBuffer = new StringBuffer();
&&&&&&&&&&& if (myResultSet.next()) {
&&&&&&&&&&&&&&& java.sql.Blob blob = myResultSet.getBlob(this.strImgName);
&&&&&&&&&&&&&&& InputStream inStream = blob.getBinaryStream();
&&&&&&&&&&&&&&& try {
&&&&&&&&&&&&&&&&&&& long nLen = blob.length();
&&&&&&&&&&&&&&&&&&& int nSize = (int) nL
&&&&&&&&&&&&&&&&&&& data = new byte[nSize];
&&&&&&&&&&&&&&&&&&& inStream.read(data);
&&&&&&&&&&&&&&&&&&& inStream.close();
&&&&&&&&&&&&&&& } catch (IOException e) {
&&&&&&&&&&&&&&&&&&& System.out.println("获取图片数据失败,原因:" + e.getMessage());
&&&&&&&&&&&&&&& }
&&&&&&&&&&& }
&&&&&&&&&&& System.out.println(myStringBuffer.toString());
&&&&&&&&&&& mit();
&&&&&&&&&&& myConnection.close();
&&&&&&& } catch (SQLException ex) {
&&&&&&&&&&& System.out.println(ex.getMessage());
&&& private byte[] ChangeImgSize(byte[] data, int nw, int nh){
&&& byte[] newdata =
&&&&&&&& BufferedImage bis = ImageIO.read(new ByteArrayInputStream(data));
&&&&&&&&&&& int w = bis.getWidth();
&&&&&&&&&&& int h = bis.getHeight();
&&&&&&&&&&& double sx = (double) nw /
&&&&&&&&&&& double sy = (double) nh /
&&&&&&&&&&& AffineTransform transform = new AffineTransform();
&&&&&&&&&&& transform.setToScale(sx, sy);
&&&&&&&&&&& AffineTransformOp ato = new AffineTransformOp(transform, null);
&&&&&&&&&&& //原始颜色
&&&&&&&&&&& BufferedImage bid = new BufferedImage(nw, nh, BufferedImage.TYPE_3BYTE_BGR);
&&&&&&&&&&& ato.filter(bis, bid);&&&&&&&&&
&&&&&&&&&&& //转换成byte字节
&&&&&&&&&&& ByteArrayOutputStream baos = new ByteArrayOutputStream();
&&&&&&&&&&& ImageIO.write(bid, "jpeg", baos);
&&&&&&&&&&& newdata = baos.toByteArray();
&&& }catch(IOException e){
&&&&&&&& e.printStackTrace();
下面是我的存储读取blob图片的案例
代码如下:import java.sql.*;&&&
import java.io.*;&&
public class InsertPhoto {&
&&& public static void main(String[] args) throws Exception{&
&&&&&&&&&&& Class.forName("com.mysql.jdbc.Driver");&&&
&&&&&&&&&& Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/wiseweb?user=root&password=root");&&&
&&&&&&&&&& File f = new File("e:/123.jpg");&&&
&&&&&&&&&& FileInputStream fis = new FileInputStream(f);&&&
&&&&&&&&&& String sql = "insert into photo(photo,photoName) values(?,?)";&&&
&&&&&&&&&& PreparedStatement pstmt = con.prepareStatement(sql);&&&
&&&&&&&&&& pstmt.setBinaryStream(1,fis,(int)f.length());&&&
&&&&&&&&&& pstmt.setString(2, "测试图片");&
&&&&&&&&&& pstmt.executeUpdate();&&&
&&&&&&&&&& fis.close();&&&
&&&&&&&&&& pstmt.close();&&&
&&&&&&&&&& con.close();&&
代码如下:import java.awt.image.BufferedI&
import java.io.BufferedInputS&
import java.io.IOE&
import java.io.InputS&
import java.io.OutputS&
import java.sql.C&
import java.sql.DriverM&
import java.sql.ResultS&
import java.sql.SQLE&
import java.sql.S&
import javax.imageio.ImageIO;&
import javax.servlet.http.HttpS&
import javax.servlet.http.HttpServletR&
import javax.servlet.http.HttpServletR&
import com.sun.image.codec.jpeg.JPEGC&
import com.sun.image.codec.jpeg.JPEGImageE&
public class ReadPhoto extends HttpServlet{&
&&& private static final long serialVersionUID = 1L;&
&&& public void doGet(HttpServletRequest request, HttpServletResponse response){&
&&&&&&& if(request.getParameter("id") != null){&
&&&&&&&&&&& response.setContentType("image/jpeg");&
&&&&&&&&&&& try {&
&&&&&&&&&&&&&&& InputStream is = query_getPhotoImageBlob(Integer.parseInt(request.getParameter("id"))) ;&
&&&&&&&&&&&&&&& if(is != null){&
&&&&&&&&&&&&&&&&&&& is = new BufferedInputStream(is) ;&
&&&&&&&&&&&&&&&&&&& BufferedImage bi = ImageIO.read(is) ;&
&&&&&&&&&&&&&&&&&&& OutputStream os = response.getOutputStream() ;&
&&&&&&&&&&&&&&&&&&& JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os) ;&
&&&&&&&&&&&&&&&&&&& encoder.encode(bi);&
&&&&&&&&&&&&&&&&&&& os.close();&&&
&&&&&&&&&&&&&&&&&&& is.close();&&&
&&&&&&&&&&&&&&& }&
&&&&&&&&&&& } catch(IOException e){&
&&&&&&&&&&&&&&& e.printStackTrace();&
&&&&&&&&&&& }catch (NumberFormatException e) {&
&&&&&&&&&&&&&&& // TODO Auto-generated catch block&
&&&&&&&&&&&&&&& e.printStackTrace();&
&&&&&&&&&&& } catch (ClassNotFoundException e) {&
&&&&&&&&&&&&&&& // TODO Auto-generated catch block&
&&&&&&&&&&&&&&& e.printStackTrace();&
&&&&&&&&&&& } catch (SQLException e) {&
&&&&&&&&&&&&&&& // TODO Auto-generated catch block&
&&&&&&&&&&&&&&& e.printStackTrace();&
&&&&&&&&&&& }&
&&&&&&& }&
&&& public static InputStream query_getPhotoImageBlob(int id) throws ClassNotFoundException, SQLException{&&&
&&&&&&&&&& String sql = "select photo from photo where id="+&&&
&&&&&&&&&& Connection con =&&&
&&&&&&&&&& Statement stmt =&&&
&&&&&&&&&& ResultSet rs =&&&
&&&&&&&&&& InputStream result =&&&
&&&&&&&&&& try {&&&
&&&&&&&&&&& Class.forName("com.mysql.jdbc.Driver");&&&
&&&&&&&&&&& con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/wiseweb?user=root&password=root");&&&&
&&&&&&&&&&& stmt = con.createStatement();&&&
&&&&&&&&&&& rs = stmt.executeQuery(sql);&&&
&&&&&&&&&&& if (rs.next())&&&
&&&&&&&&&&& result = rs.getBlob("photo").getBinaryStream();&&&
&&&&&&&&&& } catch (SQLException e) {&&&
&&&&&&&&&&& // TODO: handle exception&&&
&&&&&&&&&&& System.err.println(e.getMessage());&&&
&&&&&&&&&& }finally{&&&
&&&&&&&&&&&&&& rs.close();&&&
&&&&&&&&&&&&&& stmt.close();&&&
&&&&&&&&&&&&&& con.close();&&
&&&&&&&&&& }&&&
&&&&&&&&&&&&&
&&&&&&& }&&
代码如下:&img style="width:320height:240px" src="&%=basePath%&/genImage?id=3"/&
web.xml中配置
代码如下:&servlet&&
&&& &servlet-name&genImage&/servlet-name&&
&&& &servlet-class&ReadPhoto&/servlet-class&&
&/servlet&&
&servlet-mapping&&
&&& &servlet-name&genImage&/servlet-name&&
&&& &url-pattern&/genImage&/url-pattern&&
&/servlet-mapping&
希望本文所述对大家的Java程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具oracle中如何取出BLOB类型的值
我的图书馆
oracle中如何取出BLOB类型的值
下面是一段JSP代码 &%@ page language="java" import="java.sql.*,java.util.*"%&&%@ page language="java" import="oracle.sql.*"%&&%&& String image_id ="1";&& Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();&& && String url="jdbc:oracle:thin:@172.18.16.68:1521:rz817"; && //orcl为你的数据库的SID && String user="hr_system"; && String password="manager"; && Connection conn= DriverManager.getConnection(url,user,password);&& && Statement stmt = conn.createStatement();&& ResultSet rs = stmt.executeQuery("SELECT * FROM tfile WHERE id = " + image_id);& && java.io.File fileout=new java.io.File("e:/img.jpg");&& FileOutputStream op = new FileOutputStream(fileout);&& int length = 0;&& && if (rs.next()){&&&&&& String dim_image = rs.getString("filename");&&&&&& &&&&&& BLOB blocco = (BLOB)rs.getObject("info"); &&&&&& length = (int)blocco.length();&&&&&& &&&&&& byte [] byte_array& = blocco.getBytes(1, length);&&&&&& for(int i=0;i&byte_array.i++)&&& {&&& op.write(byte_array[i]);&&& }&&&& /*&&&&&& for(int i=0;i&blocco.i++){&&&&&&&&&&& op.write(blocco[i]);&&&&&&& }&&&&&& */&& } && op.close() ;&& && && rs.close();&& stmt.close();&& conn.close();&& %& 此处可取出BLOB的值,如果想让JSP直接显示出图片,用以下的代码:
&%@ page import="com.chinsoft.web.ClientAccesss.ClientLanMuAccess"%&&%@ page import="com.chinsoft.monAccess"%&&%@ page import="java.io.*,java.awt.*,java.awt.image.*,com.sun.image.codec.jpeg.*,java.util.*"%&&%@ page import="java.sql.*,java.sql.ResultSet"%&&%@ page import="com.evsoft.file.*" %&&%@ page import="com.evsoft.db.*" %&&%@ page import="com.evsoft.util.*" %&&%@ page import="java.sql.*" %&&&&%&ClientLanMuAccess Access=new ClientLanMuAccess();&int data_num=Access.GetReportMaxID(request.getParameter("FileID"));&int intpage = 1;&String FileID=request.getParameter("FileID");&if (request.getParameter("page") != null)&&& intpage = Integer.parseInt(request.getParameter("page"));&&&&&&&&&&&&&&& Connection conn=&&&&&&&&&&&&&&& ResultSet rs=&&&&&&&&&&&&&&& PreparedStatement ps=try{&&&&&&& conn = new CommonAccess().createConnection();
&&&&&&& //ps =conn.prepareStatement( "Select Report_Img from WEB_Report Where Report_ID="+intpage+" and LIEBIAO_ID="+FileID+" ");&&&&&&& ps =conn.prepareStatement( "select report_img from web_report where liebiao_id=15 and report_id=37");&&&&rs = ps.executeQuery();
&&&if (rs != null)&&&{&&&&& &&&&System.out.println("sa1");&&&&while (rs.next())&&&&{&&&&& &System.out.println("sa2");&&&&&&&&&& &ServletOutputStream sout = response.getOutputStream();&&&&&&&&&& &response.setContentType("image/jpeg");&&&&&&&&&& &InputStream in = rs.getBinaryStream(1);&&&&&&&&&& &byte b[] = new byte[0x7a120];&&&&&&&&&& &for(int i = in.read(b); i != -1;)&&&&&&&&& &{&&&&&&&&&&& &sout.write(b);&&&&&&&&&&& &in.read(b);&&&&&&&&& &}&&&&&&&&&& &in.close();&&&&&&&& &&sout.flush();&&&&&&&& &&sout.close(); &&&&&&}&&&&rs.close();&&&}&&&ps.close();
}catch (SQLException e){
&&&e.printStackTrace();}finally{try{System.out.println("err_test_sam!222");& if (rs != null)& &rs.close();& if (ps != null)& &ps.close();& if (conn != null)& &conn.close();& &}catch (Exception e){&System.out.println("err_test_sam!000");}}%&
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&如何读取Oracle的BLOB字段里的文件 - love - ITeye技术网站
如何读取Oracle的BLOB字段里的文件
使用ORADBI读取存储在BLOB字段里的多个文件,并还原到指定的路径下。
下面是完整的代码:
#define_CRTDBG_MAP_ALLOC
#include&stdlib.h&
#include&crtdbg.h&
#include"../oradbi.h"
#ifdef_DEBUG
#pragmacomment(lib,"../oradbi_dll/debug/oradbid.lib")
#pragmacomment(lib,"../oradbi_dll/release/oradbi.lib")
#defineORADB_SERVICE"CHEUNG"
#defineORADB_LOGUSER"mineusr"
#defineORADB_PASSWORD"minepwd"
voidselect_blob_data()
ora_error_
ora_connectioncon=0;
ora_sqlstmtstmt=0;
ora_rowsetrs=0;
charbuf[30];
char**pp_fnames=0;
ushortnum_files=0;
rc=ORA_connection_create(&con,ORADB_SERVICE,ORADB_LOGUSER,ORADB_PASSWORD,OCI_THREADED|OCI_OBJECT,FALSE,&err);
assert(rc==ORC_SUCCESS);
rc=ORA_sqlstmt_create(&stmt,con,"selectBM,NAME,BIRTH,DATAfromTESTwhererownum&2",-1,0,&err);
assert(rc==ORC_SUCCESS);
rc=ORA_sqlstmt_select(stmt,MOD_DEFAULT,&rs,&err);
assert(rc==ORC_SUCCESS);
printf("/nBMNAMEBIRTHDATA/n------------------------------------------------------/n");
while(ORA_rowset_next(rs))
col=ORA_rowset_get_column_by_index(rs,1,&err);
assert(ORA_column_not_null(col));
ORA_column_as_string(col,&psz,&err);
printf("%s",psz);
col=ORA_rowset_get_column_by_index(rs,2,&err);
assert(ORA_column_not_null(col));
ORA_column_as_string(col,&psz,&err);
printf("%s",psz);
col=ORA_rowset_get_column_by_index(rs,3,&err);
assert(ORA_column_not_null(col));
ORA_column_as_datetime(col,&odt,&err);
ORA_datetime_to_string(odt,"YYYY-MM-DDHH:UU:SS",buf,&err);
printf("%s",buf);
col=ORA_rowset_get_column_by_index(rs,4,&err);
assert(ORA_column_not_null(col));
rc=ORA_column_read_lobfile(col,"c://temp",&pp_fnames,&num_files,&err);
assert(rc==ORC_SUCCESS);
for(ui=0;ui&num_ui++){
printf("/n%s",pp_fnames[ui]);
ORA_string_list_free(pp_fnames,num_files);
printf("/n");
ORA_rowset_free(rs);
ORA_sqlstmt_free(stmt);
ORA_connection_free(con);
intmain(intargc,char*argv[])
select_blob_data();
_CrtDumpMemoryLeaks();
浏览: 310370 次
说的都是废话
好东东 但是在客户端要如何实现语音播报呢还有声音能在优化下吗
牛逼啊……
这篇文章很不错
你好,我现在在学习android ,能把这个实例的完整 ...

我要回帖

更多关于 数据类型 的文章

 

随机推荐