怎样在 UPDATE语言中改变Blob字段的数据?

解决方案 »

  1.   

    不小心写错了, 是 UPDATE语句, 不是UPDATE语言或者 INSERT语句中如何给 Blob字段赋值?
      

  2.   

    楼主要的是这个吗?procedure TForm1.Button1Click(Sender: TObject);
    begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Text:='insert into test1 values(:IMAGE)';
    ADOQuery1.Parameters[1].LoadFromFile('d:\temp\025.jpg',ftBlob);
    ADOQuery1.ExecSQL;
    end;
      

  3.   

    我要 UPDATE语句或INSERT语句。不是 ADOQuery
      

  4.   

    极端了兄弟,如果你想把Microsoft ActiveX Data Objects干的活自己来干,我想你得琢磨它是怎么把这个blob数据保存到数据库的,真的单纯的通过insert语句来实现?我暂时不这么认为。
      

  5.   

    看看下面的内容对你会不会有些启发ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemDataOracleClientOracleLobClassTopic.htm
    DBMS_LOB.CREATETEMPORARY 系统存储过程并绑定 LOB 输出参数打开 Oracle 中的临时 LOB。在客户端,临时 LOB 的行为很像基于表的 LOB。例如,要更新临时 LOB,它必须包含在事务中
    下面的 C# 示例阐释如何打开一个临时 LOB。
    OracleConnection conn = new OracleConnection("server=MyServer; integrated security=yes;");
    conn.Open();
    OracleTransaction tx = conn.BeginTransaction();
    OracleCommand cmd = conn.CreateCommand();
    cmd.Transaction = tx;
    cmd.CommandText = "declare xx blob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end;";
    cmd.Parameters.Add(new OracleParameter("tempblob", OracleType.Blob)).Direction = ParameterDirection.Output;
    cmd.ExecuteNonQuery();
    OracleLob tempLob = (OracleLob)cmd.Parameters[0].Value;
    tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
    tempLob.Write(tempbuff,0,tempbuff.Length);
    tempLob.EndBatch();
    cmd.Parameters.Clear();
    cmd.CommandText = "myTable.myProc";
    cmd.CommandType = CommandType.StoredProcedure;  
    cmd.Parameters.Add(new OracleParameter("ImportDoc", OracleType.Blob)).Value = tempLob;
    cmd.ExecuteNonQuery();
    tx.Commit();
      

  6.   

    难道不是所有的记录数据都是通过直接用UPDATE或INSERT语句写入的?
      

  7.   

    难道不是所有的记录数据都是通过直接用UPDATE或INSERT语句写入的?,这个提问好啊.
      

  8.   

    要改变blob字段的数据,应该使用流操作。