java string blob_java String类型和blob类型转换

这是一个Java类,用于在MySQL数据库中存储和检索BLOB类型的图片数据。通过连接数据库,使用PreparedStatement进行插入和查询操作。注意,需要将数据库中的Blob字段设置为longblob以避免数据丢失。在存储时,文件内容通过setBinaryStream方法写入,读取时则通过getBinaryStream方法读出。
摘要由CSDN通过智能技术生成

展开全部

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

/**

* Title: BlobPros.java

* Project: test

* Description: 把图片存入mysql中的blob字段,并取出

* Call Module: 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());

}

}

}

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值