代码如下: 
Dim conn                        
Dim rs                                                                        
Dim connstr                        Set conn = CreateObject("ADODB.CONNECTION")                
connstr = "Driver={Microsoft ODBC for Oracle};Server=mydatabase;Uid=bing;Pwd=123;"            
conn.Open connstr                              
    
If (conn.State = 0) Then 
    MsgBox "连接数据库失败!" 
End If 
    Set rs = CreateObject("ADODB.RECORDSET") 
rs.ActiveConnection = conn 
rs.CursorLocation = 2 
rs.CursorType = 1 
rs.LockType = 3 
rs.Source = "select * from byte_attach where p_rec_id='"& p_rec_id &"' " 
rs.Open,conn,,, 1 当表byte_attach中没有BLOB字段时open没问题,byte_attach中有BLOB字段时open就出错。百思不得其解,请高手指点

解决方案 »

  1.   

    就是有blob字段时不能用select *来查询。
    可以select col1,col2,...from t查非blob字段,再单独取blob字段。
      

  2.   

    和java不一样哟。java可以一起取的呀
      

  3.   

    vc555 你好,请你说明白点怎么单独取?我也试过“select p_rec_id,finger_byte from byte_attach”和“select finger_byte from byte_attach”都通不过。我想要用RS("finger_byte").AppendChunk byte把二进制数据写入到数据库中。请问除了这种方法外还有其他的方法直接把二进制数据写入的吗
      

  4.   

    说了把blob字段和非blob字段分开sql,你还select p_rec_id,finger_byte from。
    你的blob字段就不能单纯用select来查询。
    你先用select p_rec_id字段,来确定要插入或更新的行。再处理该行的blob字段。
      

  5.   

    最简单的插入blob字段方法就是调用oracle的dbms_lob包。
      

  6.   

    “select finger_byte from byte_attach”我也用过,还是不行。
    finger_byte没有放在recordset里面,后面的更新语句RS("finger_byte").AppendChunk byte根本行不通。
      

  7.   

    finger_byte 就是blob类型的字段吧?上面不是说了吗?不能对它直接select。
      

  8.   

    对的finger_byte是BLOB,不能直接SELECT那要怎么办?我要把二进制数据放进finger_byte里面。请指点。
      

  9.   

    楼主记得有事没事baidu、google先啊:看最后一段:使用vb更新(看你这里有Dim,可能是vb,猜的呵呵)
    http://www.china-code.net/article/7/5/183050/ccvr9E7P.html