asp.net 向oracle中写入blob值 谁那有好的方法 
我在网上查的一些方法都不行
应该注意些什么高手请指点一下

解决方案 »

  1.   

    http://heisetoufa.javaeye.com/blog/262798
      

  2.   

    oracle中没有bit/bool之类的类型,使用 number(1) 吧 1表示true,0表示false
      

  3.   

    import   java.sql.*;   
      import   oracle.sql.BLOB;   
      //import   oracle.jdbc.driver.OracleResultSet;   
      import   oracle.jdbc.OracleResultSet;   
      import   java.io.*;   
        
          /**   
            *   将对象插入到数据库中,发生错误时不处理,抛出到调用层   
            *   @param   sID 数据记录的ID   
            *   @param   sFilename 要插入到BLOB对象的文件全路径   
            *   @param   iFlag 标识插入到哪个栏位   0:送出的数据 1:返回的数据   
            *   @return 插入是否成功   
            *   @throws   Exception 含文件IO例外和数据库操作例外   
            */   
          public   boolean   insertBlob(String   sID,String   sFilename,int   iFlag)   throws   Exception   {   
              boolean   sReturn   =   false;   
              String   sSQLNewRow   =   "";   
              String   sSQLLockRow   =   "";   
              String   sSQLUpdateRow   =   "";   
              ResultSet   rs   =   null;   
              Statement   stmt   =   connection.createStatement();   
              sSQLNewRow   =   "update   t_jhsjcgb   set   SCSHJ=EMPTY_BLOB(),SCSJ=sysdate   where   ID=?";   
                      sSQLLockRow   =   "select   SCSHJ   from   t_jhsjcgb   where   ID=?   for   update";   
                      sSQLUpdateRow   =   "update   t_jhsjcgb   set   SCSHJ=?   where   ID=?";   
        
              FileInputStream   fis   =   new   FileInputStream(sFilename.trim());   
              CBlob   blob   =   new   CBlob(fis);   
        
              PreparedStatement   pstmt   =   null;   
              connection.setAutoCommit(false);   
              pstmt   =   connection.prepareStatement(sSQLNewRow);   
              pstmt.setString(1,sID.trim());   
              pstmt.executeUpdate();   
        
              pstmt   =   connection.prepareStatement(sSQLLockRow);   
              pstmt.setString(1,sID.trim());   
              rs   =   pstmt.executeQuery();   
              if(rs.next()){   
                  oracle.sql.BLOB   dbBlob   =   (oracle.sql.BLOB)((oracle.jdbc.OracleResultSet)rs).getBlob(1);   
                  pstmt   =   connection.prepareStatement(sSQLUpdateRow);   
                  pstmt.setString(2,sID.trim());   
                  dbBlob.putBytes(1,blob.getRaw());   
                  pstmt.setBlob(1,dbBlob);   
                  connection.commit();   
                  sReturn   =   true;   
              }else{   
                  sReturn   =   false;   
              }   
              connection.setAutoCommit(true);   
              pstmt.close();   
              rs.close();   
              blob   =   null;   
              fis.close();   
              return   sReturn;   
          }   
        楼主参考下
      
      

  4.   

    我往DB2的BLoB字段写值的办法,请楼主参考
    //存
    string ImgFName;
    HttpPostedFile UpFile=UP_FILE.PostedFile;
    FileLength=UpFile.ContentLength;//记录文件长度 
    try
    {
    if(FileLength==0)
    {
    cfun.alert(Response,"请选择要上传的图片");
    }
    else
    {
    Byte[] FileByteArray = new Byte[FileLength];   //图象文件临时储存Byte数组
    Stream StreamObject = UpFile.InputStream;      //建立数据流对像int pos=UpFile.FileName.LastIndexOf("\\");
    ImgFName=UpFile.FileName.Substring(pos+1);StreamObject.Read(FileByteArray,0,FileLength);   
    cmd=new SqlCommand("InsImage",con);
    cmd.CommandType=CommandType.StoredProcedure;
    con.Open();
    cmd.Parameters.Add(new SqlParameter("@ImageData",SqlDbType.Image)).Value=FileByteArray;
    cmd.Parameters.Add(new SqlParameter("@ImageName",SqlDbType.NVarChar)).Value=ImgFName;
    cmd.Parameters.Add(new SqlParameter("@ImageExplain",SqlDbType.NVarChar)).Value=txtBody.Text;
    cmd.Parameters.Add(new SqlParameter("@ImageGroup",SqlDbType.NVarChar)).Value=txtImgGup.Text;
    cmd.Parameters.Add(new SqlParameter("@ImageDate",SqlDbType.NVarChar)).Value=labDate.Text;
    cmd.ExecuteNonQuery();
    cfun.alert(Response,"上传成功!","upimage.aspx");
    con.Close();
    }
    }
    catch(Exception ex)
    {
    cfun.alert(Response,"'"+ex.Message+"'");
    }//////////////////////

    con=new SqlConnection(ConfigurationSettings.AppSettings["ConStr"]);
    SimgId=Request.QueryString["ImgId"].ToString();
    Sqlstr="select ImageData from ImageStore where ImgId='"+SimgId+"'";
    if(!IsPostBack)
    {
    con.Open();
    cmd=new SqlCommand(Sqlstr,con);
    dr=cmd.ExecuteReader();
    while(dr.Read())
    {
    Response.BinaryWrite((byte[])dr["ImageData"]);
    }
    con.Close();