`
小鑫的java
  • 浏览: 142977 次
  • 性别: Icon_minigender_1
  • 来自: 浙江
社区版块
存档分类
最新评论

JDBC_上课自己的代码

阅读更多
第一天
连接Oracle
package tarena;
import java.sql.*;
public class lab1 {
    public static void main(String[] args) {
        Connection con = null;
        try {
            // 加载驱动
            String driverName = "oracle.jdbc.driver.OracleDriver";
            Class.forName(driverName);
            // 建立数据库连接
            String url = "jdbc:oracle:thin:@192.168.7.88" + ":1521:tarena";
            String username = "rensx";
            String pwd = "rensx";
            con = DriverManager.getConnection(url, username, pwd);
            System.out.println("con->" + con);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
/////////////////////////////////////////////////////////////////
连接MySQL
package tarena;
import java.sql.*;
public class lab1 {
    public static void main(String[] args) {
        Connection con = null;
        try {
            // 加载驱动
            String driverName = "com.mysql.jdbc.Driver";
            Class.forName(driverName);
            // 建立数据库连接
            String url = "jdbc:mysql://127.0.0.1:3306/mydb";
            String username = "root";
            String pwd = "";
            con = DriverManager.getConnection(url, username, pwd);
            System.out.println("con->" + con);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
con->com.mysql.jdbc.Connection@ae506e
////////////////////////////////////////////////
能用
package tarena;
import java.sql.*;
public class lab4{
    public static void main(String[] args) {
        Connection con = null;
        Statement stmt = null;
        ResultSet re = null;
        try {    //1加载驱动        
            String driverName = "oracle.jdbc.driver.OracleDriver";
            Class.forName(driverName);
            //2建立数据库连接
            String url = "jdbc:oracle:thin:@192.168.7.88" + ":1521:tarena";
            String username = "rensx";
            String pwd = "rensx";
            con = DriverManager.getConnection(url, username, pwd);
            //3获取数据库操纵对象
            stmt =con.createStatement();
            //4SQL语句
            String sql= "drop table ren_sql";
            stmt.executeUpdate(sql);/**executeUpdate执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)*/
            sql= "create table ren_sql(name varchar2(20),id number(10)  )";
            stmt.executeUpdate(sql);
            sql="insert into ren_sql values('ren1',20)";
            stmt.executeUpdate(sql);
            sql="insert into ren_sql values('ren2',20)";
            stmt.executeUpdate(sql);
            sql="insert into ren_sql values('ren3',20)";
            stmt.executeUpdate(sql);
            sql="select * from ren_sql";
            re=stmt.executeQuery(sql);//executeQuery执行给定的 SQL 语句,该语句返回单个 ResultSet 对象
            System.out.println("re->"+re);

            //5处理结果集
            StringBuffer sb=new StringBuffer();
            while(re.next()){
            sb.append("name:"+re.getString(1)+" ");
            sb.append("id:"+re.getInt(2)+"\n");
            }
            System.out.println(sb);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //6用完就可以关 
            try {
                if(re!=null)re.close();//次序不能换
            } catch (Exception e) {
                e.printStackTrace();
            }
            try {
                if(stmt!=null)stmt.close();//次序不能换
            } catch (Exception e) {
                e.printStackTrace();
            }
            try {
                if(con!=null)con.close();//次序不能换
            } catch (Exception e) {
                e.printStackTrace();
            }
        }//finally
    }
}
//////////////////////////////////////////////////
第二天
工具类

package tarena;
import java.sql.*;
public class JdbcUtil{
    static {            
        try{
                String driverName="oracle.jdbc.driver.OracleDriver";
        Class.forName(driverName);}catch(Exception e){e.printStackTrace();}
         }//static

    public static Connection getConnection(){
        String url = "jdbc:oracle:thin:@192.168.7.88" + ":1521:tarena";
        String username = "rensx";
        String pwd = "rensx";
        Connection con=null;
        try{
            con = DriverManager.getConnection(url, username, pwd);
        }catch(Exception e){e.printStackTrace();}
        return con;
        
    }

    public static void release(ResultSet rs,Statement stmt,Connection con){
            try{if(rs!=null){rs.close();}}catch(Exception e){e.printStackTrace();}
        try{if(stmt!=null){stmt.close();}}catch(Exception e){e.printStackTrace();}
        try{if(con!=null){con.close();}}catch(Exception e){e.printStackTrace();}
    }
    public static void release(Object obj){
            try{if(obj instanceof ResultSet){((ResultSet)obj).close();}
        else if(obj instanceof Statement){((Statement)obj).close();}
        else if(obj instanceof Connection){((Connection)obj).close();}
        }catch(Exception e){e.printStackTrace();}
    }

    public static void resultSetMD(ResultSet rs) {//重要 
      // public static void printRs(ResultSet rs){
      if(rs==null){
        System.out.println("ResultSet is null!");
        return;
      }
      try{
        ResultSetMetaData md = rs.getMetaData();    
         int cols = md.getColumnCount();
        StringBuffer sb = new StringBuffer();
        while(rs.next()){
          for(int i=1;i<=cols;i++){
            sb.append(md.getColumnName(i)+"=");
            sb.append(rs.getString(i)+"  ");
          }
          sb.append("\n");
        }
        System.out.println(sb.toString());
      }catch(Exception e){
        e.printStackTrace();
      }
    
    }
} 
////////////////////////////////////////////////
 PreparedStatement的使用
package tarena;
import java.sql.*;
public class lab6{
    public static void main(String [] args){
        Connection con=null;
        PreparedStatement ps=null;
        ResultSet re = null;
        try{
        con = JdbcUtil.getConnection();

        String sql="insert into ren_sql values(?,?)";
        ps=con.prepareStatement(sql);
        for(int i=0;i<10;i++){ps.setString(1,"ren"+i);ps.setInt(2,i);ps.executeUpdate();}
        JdbcUtil.release(ps);//注意释放

        sql="select * from ren_sql";
        ps=con.prepareStatement(sql);
        re=ps.executeQuery();

        StringBuffer sb=new StringBuffer();
        while(re.next()){
        sb.append("name:"+re.getString(1)+"  ");
        sb.append("is:"+re.getString(2)+"\n");
        }
        System.out.println(sb);

        }catch(Exception e){}
        finally{JdbcUtil.release(re,ps,con);}
    }

}
////////////////////////////////////////////
 ResultSetMetaData的使用
package tarena;
import java.sql.*;
public class lab7{
    public static void main(String [] args){
        if(args.length!=1){System.out.println("error");return ;}

        String tableName=args[0];
        

        Connection con=null;
        PreparedStatement ps=null;
        ResultSet re = null;
        try{
        con = JdbcUtil.getConnection();

        String sql="select * from "+tableName;
        ps=con.prepareStatement(sql);
        re=ps.executeQuery();

        StringBuffer sb=new StringBuffer();
        ResultSetMetaData md =re.getMetaData();
        int cols =md.getColumnCount();
        System.out.println("cols:"+cols);
        for(int i=1;i<=cols;i++){
            sb.append(md.getColumnName(i)+"->");
            sb.append(md.getColumnType(i)+"&");//类型编号
            sb.append(md.getColumnTypeName(i)+"\n");//字段类型名字
        }

        sb.append("\n\n");
        while(re.next()){
        for(int i=1;i<=cols;i++){
            sb.append(md.getColumnName(i)+"=");
            sb.append(re.getString(i));
            sb.append("   ");
            }
        sb.append("\n");
        }
        System.out.println(sb);

        }catch(Exception e){}
        finally{JdbcUtil.release(re,ps,con);}
    }

}
////////////////////////////////////////////////
DatabaseMetaData的使用
package tarena;
import java.sql.*;
public class Lab9
{
    public static void main(String[] args){
      Connection con = null;
      ResultSet rs =null;
      try{
        con = JdbcUtil.getConnection();
        DatabaseMetaData md = con.getMetaData();
        String[] types = {"TABLE"};
        rs = md.getTables(
                null,
                "OPENLAB",
                "%",
                types);
        JdbcUtil.printRs(rs);
      }catch(Exception e){
        e.printStackTrace();
      }finally{
        JdbcUtil.release(rs,null,con);
      }
    }
}
///////////////////////////////////////////////
package tarena;
import java.sql.*;
import java.io.*;

public class SQLTools
{
    public static void main(String[] args){
      Connection con = null;
      while((con=getConnection())==null){}
      try{
        StringBuffer sb = new StringBuffer();
        String cmd = "";
        boolean flag = true;
        int c = 0;
        String message = "";
        while(flag){
          if(c++==0){
            message = "SQLTools->";
          }else{
            message = c+"->";
          }
          sb.append(prompt(message));
          cmd = sb.toString().trim();
          if(cmd.endsWith(";")){
            String sql = cmd.substring(0,cmd.length()-1);
            if("quit".equals(sql)){
               flag = false;
            }else{
               System.out.println(sql);
               execute(sql,con);
               sb = new StringBuffer();
               c=0;
            }
          }
        }
      }catch(Exception e){
        e.printStackTrace();
      }finally{
        JdbcUtil.release(con);
      }
    }
    public static Connection getConnection(){
        try{
            String driverName="oracle.jdbc.driver.OracleDriver";
            Class.forName(driverName);}catch(Exception e){e.printStackTrace();}
      String message="请输入url:\n";
      String url = prompt(message);
      message = "请输入用户名:\n";
      String username = prompt(message);
      message = "请输入密码:\n";
      String pwd = prompt(message);
      Connection con = null;
      try{
        con = DriverManager.getConnection(
            url,username,pwd);
      }catch(Exception e){
        System.out.println("->连接失败!");
      }
      return con;
    
    }
    public static String prompt(String message){
      BufferedReader in = 
          new BufferedReader(
            new InputStreamReader(System.in));
      System.out.print(message);
      String input = "";
      try{
        input=in.readLine();
      }catch(Exception e){
        e.printStackTrace();
      }
      return input;
    }
    public static void execute(String sql,Connection con){
      Statement stmt = null;
      ResultSet rs = null;
      int c = 0;
      try{
        stmt = con.createStatement();
        if(stmt.execute(sql)){
          rs = stmt.getResultSet();
          JdbcUtil.resultSetMD(rs);
        }else{
          c = stmt.getUpdateCount();
          System.out.println("更新成功-"+c);
        }
      }catch(Exception e){
        System.out.println("数据库操作失败!");
      }finally{
        JdbcUtil.release(rs,stmt,null);
      }
      
    }
}
////////////////////////////////////////////////

package tarena;

import java.io.FileNotFoundException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;

public class ConnectionFactory {
    private static String url;
    private static String userName;
    private static String passwd;
    private static String driver;

    static {

        try {
            parseConfig();
            Class.forName(driver);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static synchronized Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url,userName,passwd);
    }
    private static void parseConfig() throws FileNotFoundException {
        SAXBuilder builder = new SAXBuilder();
        Document dom = null;
        try {
            dom = builder.build("dbconfig.xml");

        } catch (Exception e) {
            throw new FileNotFoundException("file");
        }
        Element root = dom.getRootElement();
        String use = root.getAttributeValue("use");
        List<Element> infos = root.getChildren();
        for (Element info : infos) {
            if (use.equals(info.getAttributeValue("name"))) {
                List<Element> values = info.getChildren();
                for (Element value : values) {
                    if ("url".equals(value.getName())) {
                        url = value.getTextTrim();
                    } else if ("username".equals(value.getName())) {
                        userName = value.getTextTrim();
                    } else if ("passwd".equals(value.getName())) {
                        passwd = value.getTextTrim();
                    } else if ("driver".equals(value.getName())) {
                        driver = value.getTextTrim();
                    }
                }
            }
        }
    }

    public static void main(String[] args) {
        new ConnectionFactory();
    }
}
/**
 * <?xml version="1.0" encoding="UTF-8"?>
<dbconfig use="oracle">
    <dbinfo name="oracle">
        <url>jdbc:oracle:thin:@192.168.7.88:1521:tarena</url>
        <username>rensx</username>
        <passwd>rensx</passwd>
        <driver>oracle.jdbc.driver.OracleDriver</driver>
    </dbinfo>
    <dbinfo name="mysql">
        <url>jdbc:mysql://127.0.0.1:3306/test</url>
        <username>root</username>
        <passwd></passwd>
        <driver>com.mysql.jdbc.Driver</driver>
    </dbinfo>
</dbconfig>*/
///////////////////////////////////////////////////////////
第3天
package tarena;
import java.sql.*;
import java.io.*;

public class SQLTools
{   //添加的事务的处理功能
    public static void main(String[] args){
        
      Connection con = null;
      while((con=getConnection())==null){}
      try{
          //自动提交关闭
          con.setAutoCommit(false);
        StringBuffer sb = new StringBuffer();
        String cmd = "";
        boolean flag = true;
        int c = 0;
        String message = "";
        while(flag){
          if(c++==0){
            message = "SQLTools->";
          }else{
            message = c+"->";
          }
          sb.append(prompt(message));
          cmd = sb.toString().trim();
          if(cmd.endsWith(";")){
            String sql = cmd.substring(0,cmd.length()-1);//去分号的作用
            if("quit".equals(sql)){
               flag = false;
               con.commit();//
            }else if("commit".equals(sql)){
                con.commit();
                c=0;
            }else if("roolback".equals(sql)){
                con.rollback();
                c=0;
            }else{
               System.out.println(sql);
              
               try{ execute(sql,con);}catch(Exception e){
                   System.out.println("强制回滚");
                   try{
                        if(con!=null){con.rollback();}
                    }catch(Exception ee){}
               }
               sb = new StringBuffer();
               c=0;
            }
          }
        }
      }catch(Exception e){
        e.printStackTrace();
       
      }finally{
        JdbcUtil.release(con);
      }
    }
    public static Connection getConnection(){
        try{
            String driverName="oracle.jdbc.driver.OracleDriver";
            Class.forName(driverName);}catch(Exception e){e.printStackTrace();}
      String message="请输入url:\n";
      String url = prompt(message);
      message = "请输入用户名:\n";
      String username = prompt(message);
      message = "请输入密码:\n";
      String pwd = prompt(message);
      Connection con = null;
      try{
        con = DriverManager.getConnection(
            url,username,pwd);
      }catch(Exception e){
        System.out.println("->连接失败!");
      }
      return con;
    
    }
    public static String prompt(String message){
      BufferedReader in = 
          new BufferedReader(
            new InputStreamReader(System.in));
      System.out.print(message);
      String input = "";
      try{
        input=in.readLine();
      }catch(Exception e){
        e.printStackTrace();
      }
      return input;
    }
    public static void execute(String sql,Connection con) throws Exception{
      Statement stmt = null;
      ResultSet rs = null;
      int c = 0;
      try{
        stmt = con.createStatement();
        if(stmt.execute(sql)){
          rs = stmt.getResultSet();
          JdbcUtil.resultSetMD(rs);
        }else{
          c = stmt.getUpdateCount();
          System.out.println("更新成功-"+c);
        }
      }catch(Exception e){
        System.out.println("数据库操作失败!");
        throw e;
      }finally{
        JdbcUtil.release(rs,stmt,null);
      }
      
    }
}
/////////////////////////////////////////////////////////
事务的设置
public class lab10 {

    public static void main(String[] args) {
        Connection con =null;
        try{
            con=JdbcUtil.getConnection();
            con.setTransactionIsolation(Connection.TRANSACTION_NONE);
            //抛异常:java.sql.SQLException: 仅 READ_COMMITTED 和 SERIALIZABLE 是有效的事务处理级
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            JdbcUtil.release(con);
        }
    }
}

//////////////////////////////////////////
public class lab11 {
//JDBC2.0的结果集
    public static void main(String[] args) {
        Connection con = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            con = JdbcUtil.getConnection();
            con.setAutoCommit(false);//习惯
            String sql = "select * from ren_sql";
            //
            ps = con.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE,
                    ResultSet.CONCUR_UPDATABLE);
            
            rs = ps.executeQuery();
            JdbcUtil.resultSetMD(rs);
            if(rs.isAfterLast()){
                System.out.println("游标在最后面");
                rs.beforeFirst();
            }
            JdbcUtil.resultSetMD(rs);
            con.commit();
        } catch (Exception e) {
            e.printStackTrace();
            try{
                if(con!=null){con.rollback();}
            }catch(Exception ee){}
        }finally{
            JdbcUtil.release(rs, ps, con);
        }

    }

}
////////////////////////////////////////////
public class lab12 {
//JDBC2.0的结果集更新
    public static void main(String[] args) {
        Connection con = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            con = JdbcUtil.getConnection();
            con.setAutoCommit(false);//习惯
            String sql = "select id,mon from ren_bank";//不能用* 来表示
            //
            ps = con.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE,
                    ResultSet.CONCUR_UPDATABLE);        
            rs = ps.executeQuery();            
            //
            rs.moveToInsertRow();
            rs.updateInt(1,3);
            rs.updateDouble(2,100);
            rs.insertRow();
            rs.moveToCurrentRow();
            //
            System.out.println("*************1**********");
            JdbcUtil.resultSetMD(rs);
            con.commit();
            System.out.println("**************2***************");
            JdbcUtil.release(rs);
            rs=ps.executeQuery();
            JdbcUtil.resultSetMD(rs);
            con.commit();
        } catch (Exception e) {
            e.printStackTrace();
            try{
                if(con!=null){con.rollback();}
            }catch(Exception ee){}
        }finally{
            JdbcUtil.release(rs, ps, con);
        }

    }

}
////////////////////////////////////////
package tarena;

import java.sql.*;
//改进版的
public class SQLTools { // 添加的事务的处理功能
    public static void main(String[] args) {

        Connection con = null;
        while ((con = getConnection()) == null) {
        }
        try {
            // 自动提交关闭
            con.setAutoCommit(false);
            StringBuffer sb = new StringBuffer();
            String cmd = "";
            boolean flag = true;
            int c = 0;
            String message = "";
            while (flag) {
                if (c++ == 0) {
                    message = "SQLTools->";
                } else {
                    message = c + "->";
                }
                sb.append(prompt(message));
                cmd = sb.toString().trim();
                if (cmd.endsWith(";")) {
                    String sql = cmd.substring(0, cmd.length() - 1);// 去分号的作用
                    if ("quit".equals(sql)) {
                        flag = false;
                        con.commit();//
                    } else if ("commit".equals(sql)) {
                        con.commit();
                        c = 0;
                    } else if ("roolback".equals(sql)) {
                        con.rollback();
                        c = 0;
                    } else {
                        System.out.println(sql);

                        try {
                            execute(sql, con);
                        } catch (Exception e) {
                            System.out.println("强制回滚");
                            try {
                                if (con != null) {
                                    con.rollback();
                                }
                            } catch (Exception ee) {
                            }
                        }
                        sb = new StringBuffer();
                        c = 0;
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();

        } finally {
            JdbcUtil.release(con);
        }
    }

    public static Connection getConnection() {
        try {
            String driverName = "oracle.jdbc.driver.OracleDriver";
            Class.forName(driverName);
        } catch (Exception e) {
            e.printStackTrace();
        }
        String message = "请输入url:\n";
        String url = prompt(message);
        message = "请输入用户名:\n";
        String username = prompt(message);
        message = "请输入密码:\n";
        String pwd = prompt(message);
        Connection con = null;
        try {
            con = DriverManager.getConnection(url, username, pwd);
        } catch (Exception e) {
            System.out.println("->连接失败!");
        }
        return con;

    }

    public static String prompt(String message) {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        System.out.print(message);
        String input = "";
        try {
            input = in.readLine();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return input;
    }

    public static void execute(String sql, Connection con) throws Exception {
        Statement stmt = null;
        ResultSet rs = null;
        int c = 0;
        try {
            stmt = con.createStatement();
            if (stmt.execute(sql)) {
                rs = stmt.getResultSet();
                JdbcUtil.resultSetMD(rs);
            } else {
                c = stmt.getUpdateCount();
                System.out.println("更新成功-" + c);
            }
        } catch (Exception e) {
            System.out.println("数据库操作失败!");
            throw e;
        } finally {
            JdbcUtil.release(rs, stmt, null);
        }

    }
}
///////////////////////////////////////
电子银行的代码  很重要
////////////////////////////////////
第4天
public class lab13 {
    // 批量更新
    public static void main(String[] args) {
        Connection con = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            con = JdbcUtil.getConnection();
            con.setAutoCommit(false);
            String sql = "insert into ren_bank values(?,?)";
            ps = con.prepareStatement(sql);
            System.out.println("now=1" + new java.util.Date());

            for (int i = 0; i < 1000; i++) {
                ps.setInt(1, i);
                ps.setDouble(2, i);
                //ps.executeUpdate();
                //批量写法,每100个记录提交
                ps.addBatch();
                if(i%100==0){ps.executeBatch();}
            }
            con.commit();
            System.out.println("now=2" + new java.util.Date());
        } catch (Exception e) {
            e.printStackTrace();
            try {
                if (con != null)
                    con.rollback();
            } catch (Exception ee) {
            } finally {
                JdbcUtil.release(rs, ps, con);
            }
        }

    }

}
////////////////////////////////////////
Blob类的使用

数据的写
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class lab14 {
    // JDBC2.0 的大数据类型
    public static void main(String[] args) {
        Connection con = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        Blob b = null;
        int id = 1;

        String filename = args[0];//手动参数输入
        System.out.println("filename="+filename);
        try {
            con = JdbcUtil.getConnection();
            con.setAutoCommit(false);
            // 1委托oracle 数据库替我们制造一个空的blob字段
            String sql = "insert into ren_blob values(?,?,empty_blob())";// oracle
                                                                            // 特有函数
            ps = con.prepareStatement(sql);
            ps.setInt(1, id);
            ps.setString(2, filename);
            ps.executeUpdate();
            // 2将空的blob 字段值读回来 我们就可以有一个空的blob的对象实例
            sql = "select fileContent from ren_blob where id=? for update";// 更新锁
            JdbcUtil.release(ps);
            ps = con.prepareStatement(sql);
            ps.setInt(1, id);
            rs = ps.executeQuery();
            if (rs.next()) {
                b = rs.getBlob(1);
            }
            // 3将文件中的内容导入到blob对象中
            InputStream in = new FileInputStream(filename);
            OutputStream out = b.setBinaryStream(0);
            byte[] content = new byte[in.available()];
            in.read(content);
            out.write(content);
            in.close();
            out.close();
            // 4将blob对象更新到数据库
            sql = "update ren_blob set fileContent=? where id=?";
            JdbcUtil.release(rs, ps, null);
            ps = con.prepareStatement(sql);
            ps.setBlob(1, b);
            ps.setInt(2, id);
            ps.executeUpdate();
            con.commit();
        } catch (Exception e) {
            e.printStackTrace();
            try {
                if (con != null)
                    con.rollback();
            } catch (Exception ee) {
            }

        } finally {
            JdbcUtil.release(null, ps, con);
        }
    }

}
/**
 * create table ren_blob( id number(12) primary key, filename varchar(55) not
 * null, fileContent blob );
 */


数据的读
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class lab142 {

    public static void main(String[] args) {
        Connection con = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        Blob b = null;
        int id = 1;
        String filename = args[0];// 手动参数输入
        if (args.length != 1) {
            System.out.println("文件名");
        }
        try {
            con = JdbcUtil.getConnection();
            con.setAutoCommit(false);
            // 1读特定id的blob字段
            String sql = "select fileContent from ren_blob where id=? for update";
            ps = con.prepareStatement(sql);
            ps.setInt(1, id);
            rs = ps.executeQuery();
            if (rs.next()) {
                b = rs.getBlob(1);
            }
            // 2将blob对象的数据导入文件(从数据库到文件)
            InputStream in = b.getBinaryStream();
            OutputStream out = new FileOutputStream(filename);
            // error:byte[] content=new byte [in.available()];
            int b2 = 0, c = 0;
            while ((b2 = in.read()) != -1) {
                out.write(b2);
                if (++c % 1024 == 0) {
                    System.out.println("读了");
                }
            }
            in.close();
            out.close();
            con.commit();

        } catch (Exception e) {
            e.printStackTrace();
            try {
                if (con != null)
                    con.rollback();
            } catch (Exception ee) {
            }

        } finally {
            JdbcUtil.release(rs, ps, con);
        }

    }

}
/////////////////////////////////////////////////////////////

 

分享到:
评论

相关推荐

    JDBC上课代码.zip

    JDBC上课代码

    JDBC代码,本人在达内学习的代码!!

    本人在达内学习的JDBC全部上课代码,希望与大家分享分享!!

    hibernate_上课笔记.zip

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以...

    达内J2EE课堂笔记,感想,小结和上课的代码.

    达内笔记 内有java ajax jsp hibernate struts servlet html jdbc oracle xml Javascript 等上课的笔记 感想,上课小结截图 以及上课的代码。

    javaWeb+JDBC+JSP+SQL高校智能排课系统设计(源代码+论文+环境配置文档+数据库+B/S架构)

    系统管理与维护 1.基础数据管理 将排课中涉及到的院、系、教研室、...根据调查得知,他们以前对排课的主要方式是通过手工处理,首先统计教师、班级人数、上课时间,首先进行第一次排课,得出一个初稿,再在这个基础之上

    基于JavaWeb的学生成绩管理系统【项目源码+数据库脚本】(毕设)

    一、项目简介 本项目是一套基于JavaWeb的学生...该模块主要实现学生上课考勤、教师上课考勤的管理,并有相关的考勤统计信息展示。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

    JSP教师辅助办公软件教学进程管理系统yeclipse开发mysql数据库bs框架java编程jdbc

    JSP 教师辅助办公软件教学进程管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发...

    捕获异常和集合

    捕获异常 具体的自己看吧,这是我上课的代码

    狂神笔记,b站狂神说课程笔记大全(最新)

    狂神说上课笔记未删减 Java基础到技术升级 1、JavaSE:Java入门 2、JavaSE:基础语法 3、JavaSE:流程控制 4、JavaSE:方法 5、JavaSE:数组 6、JavaSE:面向对象 7、JavaSE:异常机制 8、JavaSE:常用类 9、JavaSE...

    网上论坛系统-软件工程课程设计

    --软件工程课程设计介绍网上论坛系统的立项、需求、设计和编程实现,重点是J2EE下的系统整体架构设计、数据库设计、JDBC数据库连接中间件的连接方法、用户注册登录功能和版块管理功能的编程实现源代码。 根据课程...

    传智播客课件资料大全

    我所收集到的一些传智播客上课用的一些PPT和代码、学习笔记等,放在一起方便大家下载,不用一个个去找了,包括SSH、SSI、Lucence、单点登陆、oscache、JDBC、Ajax、jQuery、SCM、JPA、SVN等。

    winner

    重考分析-分析学生的重考并了解上课的危险。 教师日程安排-您将可以访问教师的日程安排,以便可以在空闲时间补充知识。 顶尖的学生-公共领域将有顶尖的学生来了解情况。 学生GPA-您的GPA的自动计算器。执行图形用户...

    JAVA自学之路

    掌握必要的细节,这个不含糊,至于其他,或者通过视频给出(这样可以给出更多的细节,但是不占上课时间,课上只讲重要的、必要的细节知识),或者在掌握了自学的能力后自己能够查出,这才是正途。 当你看书到某个...

Global site tag (gtag.js) - Google Analytics