string strcmd = null;
 
 if (docid=="") // add new record to database
 {
    strcmd = " insert into t_gw_fwb(zw) values(:i_zw)";
 }
 else
 {
    strcmd = "Update T_GW_FWB Set ZW=:i_zw  WHERE doc_id=" + docid;
  }

  System.Data.OracleClient.OracleCommand  objCommand = new System.Data.OracleClient.OracleCommand(strcmd,conn);  byte[] buffer = new byte[theFile.ContentLength];
  
  theFile.InputStream.Read(buffer,0,theFile.ContentLength);  objCommand.Parameters.Add("i_zw",System.Data.OracleClient.OracleType.Blob).Value = buffer;

   objCommand.ExecuteNonQuery();   说明:
   buffer值已经获取,我想可能错在带参数的sql语句有错,但也不知具体应该怎么写,原先只写过SQLSERVER下的类似语句,参数前用@,查一下资料说ORACLE参数前用:号,试了也不行,还请各位帮忙看看,谢谢了

解决方案 »

  1.   

    strcmd = "Update T_GW_FWB Set ZW:=i_zw  WHERE doc_id=" + docid;
      

  2.   

    strcmd = "Update T_GW_FWB Set ZW:=i_zw  WHERE doc_id='" + docid+"'";
      

  3.   

    to: qing_zhou(轻舟) 
    我的doc_id是NUMBER型,不用doc_id='" + docid+"'"这样写,您可以看看我的i_zw参数这样写对不对,您的意思是将:号放在=号前面,这是一个赋值语句呀,这样写我也试过了,是不行的.
      

  4.   

    objCommand.CommandType = CommandType.Text;还有
    objCommand.Parameters.Add("i_zw",System.Data.OracleClient.OracleType.Blob).Value = buffer;
    改成
    objCommand.Parameters.Add(":i_zw",System.Data.OracleClient.OracleType.Blob).Value = buffer;
      

  5.   

    objCommand.Parameters.Add("i_zw",System.Data.OracleClient.OracleType.Blob).Value = buffer;这一句怎么看怎么怪,我没试,你该个写法看看
      

  6.   

    以上的方法如果改用SQLSERVER的话,就可以
      

  7.   

    System.Data.OracleClient.OracleType.Blob改为
    System.Data.OracleClient.OracleType.text
      

  8.   

    传的小一点的文件行不行啊?

    byte[] buffer=System.Text.Encoding.Default.GetBytes("aaa");
    传一下试试看。