我在用java连接oracle数据库做带参数查询时出现问题,请问用软编码方式时,查询语句的参数也是用问号代替吗,那为什么我总是查不到结果呢,换成硬编码时就能正确

解决方案 »

  1.   

    我也遇到同样的问题,希望高手指点。语句如下:
         Connection con = null;
         java.sql.PreparedStatement pstmt = null;
         java.sql.ResultSet rs = null;
         con = com.mst.db.defaults.login();
         con.setAutoCommit(true);
    以下语句执行正常:
         strSql="select * from xt_yhxx where dlm='admin'" ;
         pstmt = con.prepareStatement(sql);
         rs = pstmt.executeQuery();
    但换成以下写法后返回结构为空,没有任何异常抛出:
         strSql="select * from xt_yhxx where dlm=?" ;
         pstmt = con.prepareStatement(sql);
         pstmt.setString(1, "admin");
         rs = pstmt.executeQuery();用的是Oracle 10g,Jdbc驱动就是Oracle客户端带的Class12.jar.非常困惑,望指点!
      

  2.   

    不好意思,刚才贴错了变量,应该sql-》strSql
      

  3.   

    进一步测试发现:由于dlm是char(20),若把变量的值用空格补足20位,查询结果就正确了。对于其他类型的字段如Varchar2等没有这个问题。若是这样,我每传一个参数,都要判断字段是否为Char类型,若是就要用空格补足Char的长度,这是是否太麻烦了,不太可行?如何解决这个问题?等!等!