今天查了查原来的文章 发现有不少用blob的,不过我怎么存不上啊?  
    老兄解决后别忘了告诉我一声  当然,如果我弄懂了,会告诉你的 
:)

解决方案 »

  1.   

    应该是有图片的格式的,在delphi中使用只需要将数据流赋给image,不过不支持gif
      

  2.   

    我用过Delphi和Oracle存储图片,将数据库存储图片的字段定义为blob,通过Delphi的与数据库字段相连的DBImage控件将图片存储到数据库,存储后是二进制,但是无法单独操作该字段,只能通过DBImage控件来中转。
      

  3.   

    补充说明:在Oracle存储过程中是无法操作该字段,否则就出错。你可以试一试噢!^_^
      

  4.   

    当然是用blob字段拉,先转换成二进制,再保存
      

  5.   

    ole数据头,是access的一个特性,oracle好像没有,把2进制流存放在blob中。
      

  6.   

    我昨天查了一天,发现10多份资料都是抄的同一个人的,而且我还存不起,好像是外部文件指针出错,错误报告说打不开文件。楼主搞懂了也告诉俺一声,谢了。[email protected]
      

  7.   

    今天请教了一个牛人,用的其他的方式,可以将任何文件写入数据库,大致的思路是将文件读到内存里,在内存里的文件自然是二进制的啦,在将这一段数据插到数据库里就完了,用BC写的代码插入如下:
      String   insertsql;
      TMemoryStream *ms = new TMemoryStream;  //BC的流存储类
      ms->Clear();
      ms->LoadFromFile(MyFileName);//将文件读入该流式变量,MyFileName为读入文件的完整路径
      insertsql=" insert into lin_tmp(dll_name,VERSION_NUMBER,DLL_FILE,FILE_DIR) ";
      insertsql +=" values ('"+Edit3->Text+"','"+Edit1->Text+"',:p3,'"+MyFileName+"') " ;  //数据插入SQL    
      Query1->Close();
      Query1->SQL->Clear();
      Query1->SQL->Add(insertsql);
      Query1->Params->Items[0]->LoadFromStream(ms,ftBlob);//申明MS这个流式变量以BLOB格
      Query1->Prepare();                                    式写入数据库
      Query1->ExecSQL();  大致思路如上,结合特定的语言改吧,希望能有帮助。
      

  8.   

    我有一份,已经测试成功了
    import  java.io.*;
    import  java.sql.*;
    public  class  InsertBlob  {
    public  static  void  main(String  args[])  {String  username;
    String  password;
    String  url;
    String  dropString;
    String  createString;username  =  "kr863";
    password  =  "krsoft";//  The  URL  that  will  connect  to  TECFA's  MySQL  server
    //  Syntax:  jdbc:TYPEachineort/DB_NAME
    url  =  "jdbc:oracle:thin:@172.16.0.4:1521:frerp";
    //  ----  configure  END//  INSTALL/load  the  Driver  (Vendor  specific  Code)
    try  {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    }  catch(java.lang.ClassNotFoundException  e)  {
    System.err.print("ClassNotFoundException:  ");
    System.err.println(e.getMessage());
    }try  {
    Connection  con;
    Statement  stmt;//  Establish  Connection  to  the  database  at  URL  with  usename  and  password
    con  =  DriverManager.getConnection(url,  username,  password);
    System.out.println  ("Ok,  connection  to  the  DB  worked.  Let's  see  if  we  can  insert  something:");//  con.setAutoCommit(false);
    //获取image的路径
    String image = "F:\\linsr\\upload\\11.gif";
    //转换成file格式
    File file = new File(image);
    //将文件的长度读出,并转换成Long型
    long  l1=file.length();
    int  l2=(int)l1;//以流的格式赋值
    FileInputStream  fis=null;
    try{
    fis  =  new  FileInputStream(file);
    }  catch(FileNotFoundException  e)  {}
    PreparedStatement  ps  =  con.prepareStatement("insert  into  test_img  values  (?,?,?)");
    ps.setInt(1,2);
    ps.setString(2,file.getName());
    ps.setBinaryStream(3,fis,l2);ps.executeUpdate();
    ps.close();
    try{
    fis.close();
    }  catch(IOException  e)  {}System.out.println  ("Image  Items  have  been  inserted,  you  can  now  run  the  QueryCoffees  program");
    //  Close  resources
    //  stmt.close();
    con.close();
    }
    //  print  out  decent  erreur  messages
    catch(SQLException  ex)  {
    System.err.println("==>  SQLException:  ");
    while  (ex  !=  null)  {
    System.out.println("Message:  "  +  ex.getMessage  ());
    System.out.println("SQLState:  "  +  ex.getSQLState  ());
    System.out.println("ErrorCode:  "  +  ex.getErrorCode  ());
    ex  =  ex.getNextException();
    System.out.println("");
    }
    }
    }
    }自己建一个表TEST_IMG
    相应地改变数据库连接
      

  9.   

    表结构如下:
    -- Create table
    create table TEST_IMG
    (
      ID   NUMBER,
      NAME VARCHAR2(20),
      IMG  BLOB
    )
    tablespace FRDATA
      pctfree 10
      initrans 1
      maxtrans 255
      storage
      (
        initial 64K
        minextents 1
        maxextents unlimited
      );
    判断是否插入数据库:
    select dbms_lob.getlength(img) from test_img
    是判断长度啊