我用jdbc连接oracle10数据库,连接都是对的,也能连接数据库。
但当我用PreparedStatement的传参方式时却不能用。
如我用
PreparedStatement pstmt = conn.prepareStatement("select count(*) from tab_AA where aa=?");
pstmt.setString(1,"aaaa");
rs = pstmt.executeQuery();
这样查不出结果
但当我这样写时
PreparedStatement pstmt = conn.prepareStatement("select count(*) from tab_AA where aa='"+aa+"'");
rs = pstmt.executeQuery();
却能查出数据。
请问各位这是什么原因啊,我错在哪里? 

解决方案 »

  1.   

    PreparedStatement pstmt = conn.prepareStatement("select count(*) from tab_AA where aa=?");
    pstmt.setString(1,"aaaa");
    和PreparedStatement pstmt = conn.prepareStatement("select count(*) from tab_AA where aa='"+aa+"'");
    中aa的值也是字符串"aaaa"吗?这个问题我还是第一次看到.郁闷
      

  2.   

    先确定PreparedStatement pstmt = conn.prepareStatement("select count(*) from tab_AA where aa='"+aa+"'");这里的aa是否等于字符串"aaaa"
      

  3.   

    是。
    不过我已经解决了。
    因为我数据库字段时char类型的,我把它写成这样
    PreparedStatement pstmt = conn.prepareStatement("select count(*) from tab_AA where trim(aa)=?"); 
    pstmt.setString(1,"aaaa"); 
    rs = pstmt.executeQuery(); 
    就行了。没想到会是这个引起的,郁闷.....