String sql="SELECT * FROM NewsTable WHERE (newsText LIKE '%?%') AND (newsType = ?) OR (newsTitle LIKE '%?%') AND (newsType = ?)";
String text1="'%"+newstext+"%'";
pstmt.setString(1, text1);
pstmt.setString(2, newsid);
pstmt.setString(3, text1);
pstmt.setString(4, newsid);
执行到3的时候 告诉我数据越界。。怎么解决!

解决方案 »

  1.   


    试试!
    改为
    String sql = "SELECT * FROM NewsTable WHERE (newsText LIKE '%'||?'%') AND (newsType = ?) OR (newsTitle LIKE '%'||?'%') AND (newsType = ?)";String text1=newstext; pstmt.setString(1, text1); 
    pstmt.setString(2, newsid); 
    pstmt.setString(3, text1); 
    pstmt.setString(4, newsid); 
      

  2.   


    String sql="SELECT * FROM NewsTable WHERE (newsText LIKE ?) AND (newsType = ?) OR (newsTitle LIKE ?) AND (newsType = ?)"; 
    String text1="'%"+newstext+"%'"; 
    pstmt.setString(1, text1); 
    pstmt.setString(2, newsid); 
    pstmt.setString(3, text1); 
    pstmt.setString(4, newsid); 
      

  3.   

    sql 中 '' 号里面的东西被当作字符串处理。
      

  4.   

    String sql="SELECT * FROM NewsTable WHERE (newsText LIKE ?) 
    String text1="'%"+newstext+"%'"; 
    pstmt.setString(1, text1); 
    我这样写都查询不出来 感觉还是 like后面的东西  在数据库那里没有正确的 执行到。。不出错误,就是什么也查询不出来。
      

  5.   

    String text1="'%"+newstext+"%'"; ----》String text1=newstext
    就好了,因为你前面已经有一个了,所以加上之后就会多出来一个导致你的数组越界