我想大概是这样,当用pstmt.setString(1, name);给?参数负值时,这个方法会在?的位置两边加上一对单引号。SQL语句也就成了这样 a.au_lname like '%'XXXX'%'".
我是猜的哦,不一定对。

解决方案 »

  1.   

    用system.out输出这个sql,在数据库直接执行,可以通过吗? 查一下..
      

  2.   

    应该这样写
            try {
                pstmt = conn.prepareStatement(sql, 1005, 1007);
                pstmt.setString(1, "%"+name+"%");
                rs = pstmt.executeQuery();
    .........}
    这样就OK啦,试试吧
      

  3.   

    public boolean getTitles(String name){
            String sql = "SELECT a.au_lname,t.title "+
                         "FROM titles t,titleauthor ta,authors a "+
                         "WHERE a.au_id=ta.au_id "+
                         "AND t.title_id=ta.title_id "+
                         "AND a.au_lname like ?";
            try {
                pstmt = conn.prepareStatement(sql, 1005, 1007);
                pstmt.setString(1, "%"+name+"%");
                rs = pstmt.executeQuery();
            }
      

  4.   

    两位大哥啊,你们这方法不行啊,我还是按照stmt那样写pstmt是可以的,就是不写setString()直接在sql中赋值,不过还是不爽啊,没用setString()
            String sql = "SELECT a.au_lname,t.title "+
                         "FROM titles t,titleauthor ta,authors a "+
                         "WHERE a.au_id=ta.au_id "+
                         "AND t.title_id=ta.title_id "+
                         "AND a.au_lname like '%"+name+"%'";
             pstmt = conn.prepareStatement(sql, 1005, 1007);
             rs = pstmt.executeQuery();