可以采用变量邦定insert into Tbl_Test(id,data) values(:1,:2),
varchar是不可以存储二进制的数据的

解决方案 »

  1.   

    多谢aniugecn() 回答!可是,我用什么类型的变量绑定呢?
    是用字节数组吗? 例如 byte[] bt = new byte[160];
    可是SQL 语句怎么写呢?
    总不能:
    strSql = "insert into Tbl_Test(id,data) values(:1," + bt + ")"; //error我是在Java和VC的编程环境中用到!!!
      

  2.   

    在oracle中创建表:create table Tbl_Test(id,number,my_date varchar2(160));
    插入值后,检索:select my_date from Tbl_Test where id=id号;
    在java中,使用字符串截取函数 {java内函数不熟悉,数据库中一般用substr()} 用变换字符串起始位置和长度的方法取出,或把取出的字符串存入数组中再取出。
      

  3.   

    sql语句就可以写成
    insert into Tbl_Test(id,data) values(:1,:2)
    java中不太熟悉,如果在VC中用oci的话,可以首先prepare这个sql语句
    而后调用函数OCIBindByPos将你的程序变量与参数:2关联起来,而后执行oci会
    将参数:2替换为你变量的值插入到库中的
      

  4.   

    多谢大家的回答,一定结贴!!!(因为周末的原因,最迟周一下午)************其实我的问题简单的描述如下:
    如何在程序中(VC或者Java)使用SQL语句 在 Oracle 中存取<160 bytes 的二进制数??我的一个思路:
    1)建表时,将data定义为varchar(160);
    2)在Java中:
    byte[] bt = new byte[100];
    //...给bt赋值
    String strData = new String(bt);Statement stmt;
    ResultSet rs = null;  
    //...打开的数据库连接//存入二进制数据
    String strSql = "Insert into tbl_test (id,data) values(1," + strData+")";
    stmt.execute(sql);//取出二进制数据:
    strSql = "Select data from tbl_test where id = 1";
    rs = stmt.executeQuery(sql);
    bt = getBytes("data");还没有测试过,我试试看可以否!