cell_test表结构 
名称                                      是否为空? 类型
 ----------------------------------------- -------- -------------
 ID                                        NOT NULL NUMBER(38)
 CELL_NAME                                          VARCHAR2(30)
 CELL_BLOB                                          BLOB我只想把一个二进制数据存入CELL_BLOB中,我用的是C#
程序部分代码:
object data=null;
            axCell1.SaveToBuffer(ref data);
            string insert_string = "insert into cell_test (cell_name,cell_blob) values ('text1',&date1);";
            OracleCommand orcmd = new OracleCommand(insert_string, orconn);
            OracleParameter orpara = orcmd.Parameters.Add("&date1", OracleType.Blob);
            orpara.Value = data;
            orcmd.ExecuteNonQuery();/*运行到这里就会出现 “ORA-00911: 无效字符” 的错误!
请高手指教!!

解决方案 »

  1.   

    bolb不能用这样的方式插入的,先插入个emptyblob()到bolb字段
    再updateblob语句去更新bolb字段
      

  2.   

    谢谢二位的回答,先说明一下这个错误的原因吧:
    由于我的不小心在SQL语句的后面加了一个“;”,按我们正常在SQLPLUS里面的写法结尾加上分号可以正常运行,但是把它加在sting sql="......................;";这就是错误的,并且总是提示无效字符。对于BLOB 的初始化同样是可以用插入一个不大于4096个字节的二进制流的,令外我这种方式同样可以存储二进制!!cell_test表结构  
    名称                                      是否为空? 类型 
     ----------------------------------------- -------- ------------- 
     ID                                        NOT NULL NUMBER(38) 
     CELL_NAME                                          VARCHAR2(30) 
     CELL_BLOB                                          BLOB 我只想把一个二进制数据存入CELL_BLOB中,我用的是C# 
    程序部分代码: 
    object data=null; 
    /*下面的语句就是将CELL文件存到BUFFER中*/
    axCell1.SaveToBuffer(ref data); 
    /*注意下面的insert_string,只要去掉语句中的分号就可以运行!*/
    string insert_string = "insert into cell_test (cell_name,cell_blob) values ('text1',&date1)"; 
    OracleCommand orcmd = new OracleCommand(insert_string, orconn); 
    OracleParameter orpara = orcmd.Parameters.Add("&date1", OracleType.Blob); 
    orpara.Value = data; 
    orcmd.ExecuteNonQuery();同样谢谢二位的回答!!