永发信息网

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

答案:2  悬赏:0  手机版
解决时间 2021-02-28 18:48
主要是数据库一个字段是image类型的 插数据的时候为了不报错,用从页面接收的String类型转换成blob再插进去,谁知道怎么弄,急!!!
最佳答案
这个是mysql下存取blob字段的一个很简单的类,跟据自己的需要改改就行了



//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()
{
}


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();
}
}



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 = 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 是单根继承模式

每个类 都有一个父类名叫objte  你可以强转。。   但是要保证类型的合适

string s = "11";

blob s = (blob)((objte)s);

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
心连心药房地址在哪,我要去那里办事
在西蒙菲莎大学读书是一种什么体验
明明知道感情是禁不起测试的,可是为什么还是
石家土产水泵水暖电器五金市场怎么去啊,有知
在色素的提取与分离实验中,研磨绿叶时要加入
负的反义词
一中东路/三贤路(路口)地址在什么地方,想过
18升的多乐士墙漆能刷多少平方?
朝霞和日出第三自然段作者用什么比喻什么
读不同人口增长方式图,下列说法正确的是BA.
网上买火车票怎么验证,要注册什么
莲新街道综合文化活动中心在什么地方啊,我要
离开老家30多年了 回来的时候自己的房子没了
不可或缓的意思
慕田峪邮政所地址在什么地方,想过去办事
推荐资讯
患者,女,29岁。已婚2年一直未孕,既往月经
四字成语,一叶什么?
魅蓝u10和魅蓝5哪个好
茶叶与空气接触,茶叶会变味吗
我国水旱灾害频繁的根本原因是A. 冬季风势力
红武大酒店我想知道这个在什么地方
solidworks怎样将生成的三视图一步到位的设置
学习工作精神的文章标题用什么
sheite的翻译是:什么意思
指出下列诗句使用的修辞手法.急..
根据建筑工程相关的规定,建筑幕墙工程属于()
khan这个中文可以阿,EDG不考虑一下吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?