我用Jdbc 连接Orcale , 如果是sql语句的直接拼写是没有问题的,如果加入?占位符就会报:ORA-03115: 不支持的网络数据类型或表示法 。这是为什么啊?难道Orcale 不支持?占位符么?如果不支持的话,那怎么办呢?我现在在做代码重构,公司要求 sql 参数化。不能直接拼写sql

解决方案 »

  1.   

    把SQL帖出来,还有?号相关的数据库类型
      

  2.   

    String str="select objname from SYSTEM_TABLE where objcode=? "
    PreparedStatement state = connection.prepareStatement(str);
              state.setString(1, tableid);
    state.executeQuery(str);
    ? :String
      

  3.   

    tableid直接替换成你想查询的数据,先试下
      

  4.   

    "select objname from SYSTEM_TABLE where objcode='"+tableid+"'"这样写就好使 ,很奇怪啊!
      

  5.   


    String str="select objname from SYSTEM_TABLE where objcode=? "
    PreparedStatement state = connection.prepareStatement(str);
      state.setString(1, "id");//我意思是这样写,不要套引用,直接把值写到这
    state.executeQuery(str);
      

  6.   

    恩 我试过啦  也是报ORA-03115: 不支持的网络数据类型或表示法 这个错误 
      

  7.   

    能把那句完整sql语句帖出来不
      

  8.   

    完整的意思是。把tableid的值也帖出来就是"select objname from SYSTEM_TABLE where objcode='"+tableid+"'"这句打印出来的是啥样子的
      

  9.   

    哦 是 select objname from SYSTEM_TABLE where objcode='0210'
      

  10.   

    我查了以下 楼主看一下你的SYSTEM_TABLE表里面是不是有Oracle不支持的数据类型 尤其看日期用的什么类型 如果不是date类型 改为date类型再试试
      

  11.   

    state.executeQuery(str)
    这句里面多写了 str,删除应该就好了