Eclipse3.1.1+Weblogic 9.0实现JDBC大数据对象(Blob)处理

本文提供了一个使用Java进行BLOB数据操作的例子,包括如何向数据库表中插入图片文件及从数据库中读取并保存该图片文件。示例代码详细展示了通过JNDI获取数据源、创建表、插入BLOB数据及读取BLOB数据的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,接上篇 在Eclipse3.1.1访问Weblogic 9.0中数据源的JDBC简单应用关于数据源配置详见http://blog.youkuaiyun.com/blue_fire2008/archive/2008/05/08/2413398.aspx)在项目TestJDBC中新建类,名为:TestBlob,源代码如下:
package myjdbc;
 
import java.sql.*;
import javax.naming.*;
import javax.sql.*;
import javax.transaction.UserTransaction;
 
import java.util.Properties;
import java.io.*;
 
public class TestBlob{
    Connection con=null;
 
    public void addBlob()         //向数据库bookdb表mypic中添加BLOB数据
    {
        try
        {
            //创建一个PreparedStatement实例
            PreparedStatement pstmt=con.prepareStatement("insert into mypic values('1',?)");
            File file = new File("c://pic1.jpg") ;
            FileInputStream fis = new FileInputStream(file);
            //把输入流设置为预处理语句的对象。
            pstmt.setBinaryStream(1, fis, (int)file.length());
            pstmt.executeUpdate();    //执行更新
            pstmt.close();
            fis.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
       
    public void createTable()         //创建表mypic
    {
        try
        {
            con.createStatement().execute("create table mypic (id char(1) primary key,pic blob);");
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
    /**
     */
    public void getBlob()        //     从数据库bookdb表mypic中读取BLOB数据
    {
        try
        {
            Statement stmt=con.createStatement();
            ResultSet rst=stmt.executeQuery("select * from mypic where id='1'");
            rst.next();
            //获得blob数据和它的输入流,然后通过输入流把数据写到文件中。
            Blob blob = rst.getBlob("pic") ;
            FileOutputStream out=new FileOutputStream(new File("c:/pic2.jpg"));
            InputStream in=blob.getBinaryStream();
            int i;
            while((i=in.read())!=-1)
            out.write(i);
            in.close();
            out.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
    public static void main(String[] args)throws Exception
    {
        DataSource ds = null;
        Context ctx = null;
        Connection myCon = null;
        TestBlob test = new TestBlob();
       
        Properties p=new Properties();
        p.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
        p.put(Context.PROVIDER_URL,"t3://localhost:7001");
       
        try {
            ctx=new InitialContext(p);         
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
       
        try
        {           
            ds = (javax.sql.DataSource) ctx.lookup("MySQLDS");
            myCon = ds.getConnection();
           
            test.con = myCon;
            System.out.println("成功建立连接!");
            test.createTable();
            System.out.println("成功建立表!");
            test.addBlob();
            System.out.println("成功将 Blob添加到表字段!");
            test.getBlob();
            System.out.println("成功从表字段pic获得Blob!");
            myCon.close();
        }
        catch (Exception E)
       {
           myCon.close();
           System.out.println("Init Error: " + E);
       }finally{
       try {
            if (myCon!=null) {
                myCon.close();
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
       }
    }
}
2,启动MySQL和Weblogic服务器,运行TestBlob,若控制台显示如下信息,则表示成功存取大数据对象,在驱动器也可以看到新建的对象.
成功建立连接!
成功建立表!
成功将 Blob添加到表字段!
成功从表字段pic获得Blob!
3,文件路径的访问分隔符是//或/,单个/是不行的.
欢迎转载,转载请注明出处!
                                                                                   BLUE_FIRE2008 2008年5月8日于南昌
,(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值