导航:首页 > 编程语言 > javablob转string

javablob转string

发布时间:2025-04-08 13:01:24

java 关于blob类型问题

public void save(String vid,String title,String type,String user,String date,String context,String file) throws Exception
{
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String sql = "insert into news(v_id,title,type,person,inputtime,context,attach_docid) values('"+vid+"','"+title+"','"+type+"','"+user+"','"+date+"',EMPTY_BLOB(),'"+file+"')";
try {
DBJdbc dbjdbc = new DBJdbc();
conn = dbjdbc.getDBConnection();
conn.setAutoCommit(false);
stmt = conn.createStatement();
stmt.executeUpdate(sql);
String sql1 = "select context from news where v_id ='"+vid+"' for update"; // 使用"FOR UPDATE"得到表的写锁
rs = stmt.executeQuery(sql1);
if (rs.next()) {
BLOB blob = (BLOB) rs.getBlob(1); // 得到BLOB对象
OutputStream outout = blob.getBinaryOutputStream(); // 建立输出流
InputStream in = new ByteArrayInputStream(strss.HTMLEncode(context).getBytes()); //字符串转换为数据流
int size = blob.getBufferSize();
byte[] buffer = new byte[size]; // 建立缓冲区
int len;
while ((len = in.read(buffer)) != -1)
outout.write(buffer, 0, len);
in.close();
outout.close();
}
conn.commit();
stmt.close();
conn.close();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
希望能帮助到你

② java String类型转换为Blob类型怎么转

这个是mysql下存取blob字段的一个很简单的类,跟据自己的需要改改就行了

/**
* Title: BlobPros.java
* Project: test
* Description: 把图片存入mysql中的blob字段,并取出
* Call Mole: mtools数据库中的tmp表
* File: C:\downloads\luozsh.jpg
* Copyright: Copyright (c) 2003-2003
* Company: uniware
* Create Date: 2002.12.5
* @Author: FeiFan
* @version 1.0 版本*
*
* Revision history
* Name Date Description
* ---- ---- -----------
* Chenqh 2003.12.5 对图片进行存取
*
* note: 要把数据库中的Blob字段设为longblob
*
*/

//package com.uniware;

import java.io.*;
import java.util.*;
import java.sql.*;

public class BlobPros
{
private static final String URL = "jdbc:mysql://10.144.123.63:3306/mtools?user=wind&password=123&useUnicode=true";
private Connection conn = null;
private PreparedStatement pstmt = null;
private ResultSet rs = null;
private File file = null;

public BlobPros()
{
}

/**
* 向数据库中插入一个新的BLOB对象(图片)
*
* @param infile - 要输入的数据文件
* @throws java.lang.Exception
*
*/
public void blobInsert(String infile) throws Exception
{
FileInputStream fis = null;
try
{
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn = DriverManager.getConnection(URL);

file = new File(infile);
fis = new FileInputStream(file);
//InputStream fis = new FileInputStream(infile);
pstmt = conn.prepareStatement("insert into tmp(descs,pic) values(?,?)");
pstmt.setString(1,file.getName()); //把传过来的第一个参数设为文件名
//pstmt.setBinaryStream(2,fis,(int)file.length()); //这种方法原理上会丢数据,因为file.length()返回的是long型
pstmt.setBinaryStream(2,fis,fis.available()); //第二个参数为文件的内容
pstmt.executeUpdate();
}
catch(Exception ex)
{
System.out.println("[blobInsert error : ]" + ex.toString());
}
finally
{
//关闭所打开的对像//
pstmt.close();
fis.close();
conn.close();
}
}

/**
* 从数据库中读出BLOB对象
*
* @param outfile - 输出的数据文件
* @param picID - 要取的图片在数据库中的ID
* @throws java.lang.Exception
*
*/

public void blobRead(String outfile,int picID) throws Exception
{
FileOutputStream fos = null;
InputStream is = null;
byte[] Buffer = new byte[4096];

try
{
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn = DriverManager.getConnection(URL);
pstmt = conn.prepareStatement("select pic from tmp where id=?");
pstmt.setInt(1,picID); //传入要取的图片的ID
rs = pstmt.executeQuery();
rs.next();

file = new File(outfile);
if(!file.exists())
{
file.createNewFile(); //如果文件不存在,则创建
}
fos = new FileOutputStream(file);
is = rs.getBinaryStream("pic");
int size = 0;
/* while(size != -1)
{
size = is.read(Buffer); //从数据库中一段一段的读出数据
//System.out.println(size);
if(size != -1) //-1表示读到了文件末
fos.write(Buffer,0,size);
} */
while((size = is.read(Buffer)) != -1)
{
//System.out.println(size);
fos.write(Buffer,0,size);
}

}
catch(Exception e)
{
System.out.println("[OutPutFile error : ]" + e.getMessage());
}
finally
{
//关闭用到的资源
fos.close();
rs.close();
pstmt.close();
conn.close();
}
}

public static void main(String[] args)
{
try
{

BlobPros blob = new BlobPros();
//blob.blobInsert("C:\\Downloads\\luozsh1.jpg");
blob.blobRead("c:/downloads/luozishang.jpg",47);
}
catch(Exception e)
{
System.out.println("[Main func error: ]" + e.getMessage());
}
}
}

③ JAVA怎么把图片从数据库中调用出来

1 一半图片都是把路径存放在数据库的 到时候取出路径就可以了
2 在数据库有blob格式可以存放图片 以二进制流的方式取出来

<% String zjbm = CheckParam(request.getParameter("zjbm"),""); String zpSql = "select zp from tjjryxxx where sfzh = '"+zjbm+"'"; out.clear(); response.setContentType("image/jpeg"); response.setHeader("Content-Transfer-Encoding","base64"); Connection connection = null; PreparedStatement ps = null; ResultSet rs = null; Blob blob =null; byte[] data = null; try{ connection =getConn(); ps = connection.prepareStatement(zpSql); rs = ps.executeQuery(); while(rs.next()){ blob = (Blob)rs.getBlob("zp"); long nlen = blob.length(); int nsize = (int) nlen; data = blob.getBytes(1,nsize); OutputStream out1 = response.getOutputStream(); BufferedOutputStream bos =null; bos = new BufferedOutputStream(out1); bos.write(data,0,data.length); bos.close(); rs.close(); } }catch(Exception e){ e.printStackTrace(); } %>

④ java 中 blob转字符串

在处理Java中的Blob转字符串时,可以使用BufferedInputStream从Blob对象中读取二进制流。具体代码如下:

BufferedInputStream bi = new BufferedInputStream(blob.getBinaryStream());

这里定义了一个BufferedInputStream对象bi,它从Blob对象获取二进制流。接下来,定义了一个byte数组data,用于存储每次读取的二进制数据。

data = new byte[READ_BUFFER_SIZE];

这里设置了一个固定大小的byte数组,用于存储每次读取的数据。READ_BUFFER_SIZE是一个预设的缓冲区大小,可以根据实际情况调整。

在循环中,通过bi.read(data)方法读取数据到data数组中。每次读取的长度由len变量表示,如果len值不等于-1,则表示读取成功。

for (int len = 0; (len = bi.read(data)) != -1;)

在循环内部,将读取的数据转换为字符串并追加到outfile变量中。使用GBK编码将byte数组转换为字符串。

outfile += new String(data, "GBK");

这里需要注意的是,在每次循环中需要重新初始化data数组。这是因为read方法只是覆盖读取的数据,并不会清空整个数组,因此需要在下一次读取前重新分配一个新数组。

data = new byte[READ_BUFFER_SIZE];

通过这种方式,可以确保每次读取的数据都被正确处理,并且不会影响到下一次的读取操作。

阅读全文

与javablob转string相关的资料

热点内容
程序员放弃后会怎样 浏览:158
河北模具编程 浏览:177
adb查找命令 浏览:308
安卓手机视频文件夹怎么打开 浏览:302
平板加密手机后怎么关闭 浏览:555
流媒体服务器应该注意什么 浏览:526
d8命令编译 浏览:942
压缩包解压需要多少空间 浏览:138
如何查找app属性 浏览:380
android人脸识别技术 浏览:304
pc104编程 浏览:328
二维码反编译破解推广 浏览:673
修改服务器的mac地址 浏览:519
好玩的编程软件 浏览:891
编程语言创始人有钱吗 浏览:796
短视频app怎么获客 浏览:7
查看云服务器的应用 浏览:426
javadump工具 浏览:557
程序员16g 浏览:420
程序员没有办法成为top怎么办 浏览:195