先连接数据库,
用io包将文件读成文件流,
将文件流存进数据库(我以前用的是SQL SERVER)就行了,以前就这么做的

解决方案 »

  1.   

    import java.io.*;
    import java.sql.*;public class GetTif
    {
    String Url="jdbc:odbc:Test",JdbcUser="system",JdbcPwd="manager"; public static BufferedReader getBufferedReader(String fName)
    {
    try{
    FileReader fR=new FileReader(fName);
    if(fR==null)return null;
    return new BufferedReader(fR);
    }catch(Exception ex)
    {ex.printStackTrace();return null;}
    } //存储过度文件
    private void saveFile(String DocID,InputStream inole)
    {
    try{
    byte[] OleByte = getOle(inole);
    FileOutputStream f = new FileOutputStream("d:\\documents\\GetOLE\\"+DocID+".Tif");
    f.write(OleByte);
    } catch(Exception e) {
    e.printStackTrace();
    }
    } //读二进制数据
    private static byte[] getOle(InputStream s)
    {
    byte[] buffer = new byte[0];
    byte[] chunk  = new byte[4096];
    int count;
    try{
    while((count = s.read(chunk))>=0)
    {
    byte[] t = new byte[buffer.length+count];
    System.arraycopy(buffer,0,t,0,buffer.length);
    System.arraycopy(chunk,0,t,buffer.length,count);
    buffer=t;
    }
    }catch(Exception e){}
    return buffer;
    } //初始化配置信息
    public GetTif(BufferedReader brin)
    {
    if(brin==null)return; 
    try{
    this.Url=brin.readLine().trim();
    this.JdbcUser = brin.readLine().trim();
    this.JdbcPwd  = brin.readLine().trim();
    brin.close();
    }catch(IOException ex)
    {System.err.println("FileIOError:"+ex);}
    } //读数据库
    private void readDB()
    {
    //注册数据库驱动程序
    try{
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    }
    catch(Exception e)
    {System.err.println("注册数据库驱动程序错误:" + e);}
    //从数据库读OLE或附件
    try{
    Connection con = DriverManager.getConnection(Url,JdbcUser,JdbcPwd);
    Statement st   = con.createStatement();
    ResultSet rs   = st.executeQuery("SELECT * FROM image_files");
    java.math.BigDecimal DocNo; InputStream inTif;
    while(rs.next()){
    try{
    DocNo = rs.getBigDecimal("NO",0);
    inTif = rs.getBinaryStream("TIF"); 
    saveFile(DocNo.toString(),inTif);
    System.out.println("存储过度Tif文件:"+DocNo.toString());
    }
    catch(Exception e)
    {System.err.println("存储过度文件错误:" + e);}
    }
    st.close();
    con.close();
    }
    catch(Exception e)
    {System.err.println("数据库查询错误:" + e);}
    } public static void main(String args[])
    {
    GetTif gt = new GetTif(getBufferedReader("d:\\documents\\GetOLE\\class\\odbc.ini"));
    gt.readDB();
    }
    }
      

  2.   

    odbc.ini的内容
    jdbc:odbc:testOle
    test
    test