FileDocCategorySizeDatePackage
Blobs.javaAPI DocExample3249Tue Aug 22 20:53:30 BST 2000None

Blobs

public class Blobs extends Object
Example 4.2.

Fields Summary
Constructors Summary
Methods Summary
public static voidmain(java.lang.String[] args)

        if( args.length != 1 ) {
            System.err.println("Syntax: <java Blobs [driver] [url] " +
                               "[uid] [pass] [file]");
            return;
        }
        try {
            Class.forName(args[0]).newInstance();
            Connection con = DriverManager.getConnection(args[1], args[2],
                                                         args[3]);
            File f = new File(args[4]);
            PreparedStatement stmt;

            if( !f.exists() ) {
                // if the file does not exist
                // retrieve it from the database and write it to the named file
                ResultSet rs;
                
                stmt = con.prepareStatement("SELECT blobData " +
                                              "FROM BlobTest " +
                                              "WHERE fileName = ?");

                stmt.setString(1, args[0]);
                rs = stmt.executeQuery();
                if( !rs.next() ) {
                    System.out.println("No such file stored.");
                }
                else {
                    Blob b = rs.getBlob(1);
                    BufferedOutputStream os;

                    os = new BufferedOutputStream(new FileOutputStream(f));
                    os.write(b.getBytes(0, (int)b.length()), 0,
                             (int)b.length());
                    os.flush();
                    os.close();
                }
            }
            else {
                // otherwise read it and save it to the database
                FileInputStream fis = new FileInputStream(f);
                byte[] tmp = new byte[1024];
                byte[] data = null;
                int sz, len = 0;
                
                while( (sz = fis.read(tmp)) != -1 ) {
                    if( data == null ) {
                        len = sz;
                        data = tmp;
                    }
                    else {
                        byte[] narr;
                        int nlen;
                        
                        nlen = len + sz;
                        narr = new byte[nlen];
                        System.arraycopy(data, 0, narr, 0, len);
                        System.arraycopy(tmp, 0, narr, len, sz);
                        data = narr;
                        len = nlen;
                    }
                }
                if( len != data.length ) {
                    byte[] narr = new byte[len];

                    System.arraycopy(data, 0, narr, 0, len);
                    data = narr;
                }
                stmt = con.prepareStatement("INSERT INTO BlobTest(fileName, " +
                                            "blobData) VALUES(?, ?)");
                stmt.setString(1, args[0]);
                stmt.setObject(2, data);
                stmt.executeUpdate();
                f.delete();
            }
            con.close();
        }
        catch( Exception e ) {
            e.printStackTrace();
        }