public int executeUpdate() throws SQLException;
public boolean WriteInMySql(String sql,String filename);一个是int,一个是boolean,java不允许隐含的从int转换到boolean,所以要么改变你函数的返回值的类型,要么根据int值计算出boolean再返回

解决方案 »

  1.   

    返回值错误如楼上所说。但就算返回值正确,可能也插不进去,这种方法我试过n遍了,建议该用下面的方法,保你成功。
    public static void insertblob()
      {
        try
        {
          //首先是将文件输入到数据库。
          Class.forName("oracle.jdbc.driver.OracleDriver");//注册数据库引擎。
          String dbURL = "jdbc:oracle:thin:@192.168.0.74:1521:orcl";
          String user = "pm";
          String passWord = "pm";
          Connection conn = DriverManager.getConnection(dbURL, user, passWord);
          conn.setAutoCommit(false);//关闭自动提交,以提高性能。
          Statement stmt = conn.createStatement();//建立会话
          DatabaseForHtml sqlBean = new DatabaseForHtml();
          String sqlStr = "";
          String fileName = "";
          String displayMessage = "";
          try
          {
            sqlStr = "select table_name from user_tables where table_name='JPGTEST'";
            if(!sqlBean.hasResult(conn, sqlStr))
            {
              displayMessage = (stmt.executeUpdate("create table JPGTEST (fname varchar2(600), bx blob)") == 0) ? "table created successfuly" : "table created failure";
              System.out.println(displayMessage);
            }
            File file = new File("C:\\02.jpg");
            fileName = file.getName();
            FileInputStream inStream = new FileInputStream(file);//创建输入流,将外部文件输入到InputStream 中。
            byte[] buffer = new byte[inStream.available()];
            sqlStr = "INSERT INTO JPGTEST VALUES ('" + fileName + "', empty_blob())";
            stmt.execute(sqlStr);
            ResultSet rs = stmt.executeQuery("select bx from JPGTEST where fname='" + fileName + "' for update");
            if(rs.next())
            {
              BLOB blob = ((OracleResultSet)rs).getBLOB("bx");
              OutputStream outStream = blob.getBinaryOutputStream();
              inStream.read(buffer);
              outStream.write(buffer);
              outStream.flush();
              stmt.execute("commit");
              outStream.close();
              System.out.println("文件成功写入数据库");
            }
            inStream.close();
            rs.close();
          }
          catch(SQLException e)
          {
            e.printStackTrace();
            System.out.println("数据库异常:" + e.getMessage());
          }
          //以下是从库中读取文件。
          sqlStr = "SELECT * from JPGTEST where fname='" + fileName + "'";
          System.out.println(sqlStr);
          ResultSet rset = stmt.executeQuery(sqlStr);
          if(rset.next())
          {
            BLOB blob = ((OracleResultSet)rset).getBLOB("bx");//获取文件字段。
            InputStream inStream = blob.getBinaryStream();//建立输入流,并将字段bx的值以流的形式,放入inStream变量。
            File binaryFile = new File("D:\\test\\" + fileName);
            FileOutputStream fileOutStream = new FileOutputStream(binaryFile);//创建文件输出流。
            int by = inStream.read();
            while(by != -1)
            {
              fileOutStream.write(by);
              by = inStream.read();
            }
            fileOutStream.flush();
            System.out.println("文件从数据库中成功读出");
            inStream.close();//关闭流
            fileOutStream.close();
          }
          rset.close();
          stmt.close();
          conn.close();
        }
        catch(Exception ee)
        {
          System.out.println(ee.getMessage());
        }
      }
      

  2.   

    谢谢Tmsheng,netkid的回复。Tmsheng说得对如果返回值正确,也一样存不进去。但我试了Tmsheng的代码,运行时,错误在DatabaseForHtml这儿,报"cannot resolve symbol"的错误提示。我也没查到这方面的资料。请求帮助。
      

  3.   

    我把DatabaseForHtml sqlBean = new DatabaseForHtml();这个语句去掉,因为有它编译不了,去了后,运行时数据仍不能插入数据库,代码如下,这个问题困绕了快一周了,请求帮助。
    public class upload { 
        public static void main(String[] args)
           {
           }
       public upload()
        {
            String sDBDriver ="oracle.jdbc.driver.OracleDriver"; 
         try { 
                Class.forName(sDBDriver); 
                DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); 
                Connection conn=DriverManager.getConnection("jdbc:oracle:oci8:@BTEST.BEAUTYBEARD","SQA","sqa");
                }  
            catch(java.lang.ClassNotFoundException e)  
              { 
                 System.err.println("faq(): " + e.getMessage()); 
              } 
            catch(Exception e)
              {
                 System.out.println(e);
              }
          try
          {
           int bytes=0;
           Statement stmt=conn.createStatement();
           String displayMessage="";
            File file=new File("E:\\1.doc");
            FileInputStream inStream=new FileInputStream(file); 
            byte[] buffer=new byte[inStream.available()];
           stmt.execute("insert into application values (empty_blob())");
           ResultSet rs=stmt.executeQuery("select ATT from application for update");
           if (rs.next())
           {
              BLOB blob=((OracleResultSet)rs).getBLOB("ATT");
              OutputStream outStream=blob.getBinaryOutputStream();
              inStream.read(buffer);
              outStream.write(buffer);
              outStream.flush();
              stmt.execute("commit");
              outStream.close();
              System.out.print("successful");
            }
            inStream.close();
            rs.close();
           }
            catch(IOException e)
            {
              e.printStackTrace();
            }
            catch(SQLException e)
            {
             e.printStackTrace();
             System.out.print(e.getMessage());
            }  
    }
    private Connection conn;
    }
      

  4.   

    看看这样行不行
    创建连接的部分我就省掉了
                 PreparedStatement pstmt = conn.prepareStatement("update tabelname set blobcolumn = ? ");
                 File file=new File(outFile);
                 InputStream inStream=new FileInputStream(file);
                 pstmt.setBinaryStream(1,inStream,(int)file.length());
                 pstmt.executeUpdate();
      

  5.   

    DataBaseForHtml 使我自己的bean,你自己这个地方用不着,当然不用他了。其他的肯定正确。
      

  6.   

    这种方式对数据流的大小有没有限制,我是用setBinaryStream方法发现数据流只能有4K左右。