我用的是sql server 2005(记得),我看过网上介绍的这种方法,都是不行的,大哥们,有其他方法吗?急啊,用prepareStatement模糊查询这么难吗,我要是sql server 的方法
public List queryByLike(String cond) throws Exception{
List all = new ArrayList() ;
String sql = "SELECT * FROM note WHERE title LIKE ? or AUTHOR LIKE ? or CONTENT LIKE ?" ;
PreparedStatement pstmt = null ;
DataBaseConnection dbc = null ;
dbc = new DataBaseConnection() ;
try
{
pstmt = dbc.getConnection().prepareStatement(sql) ;
pstmt.setString(1,"%"+cond+"%") ;//这里已经按照网上大部分去做的,我晕了
pstmt.setString(2,"%"+cond+"%") ;
pstmt.setString(3,"%"+cond+"%") ;

解决方案 »

  1.   

    setString 那不对吧,试试这个行不行
    pstmt.setString(2,'%'+cond+'%')
      

  2.   

    你的这个问题错在别处了吧
    pstmt.setString(1,"%"+cond+"%") ;
    pstmt.setString(2,"%"+cond+"%") ; 
    pstmt.setString(3,"%"+cond+"%") ;
    pstmt的sql语句中的?号与setString方法的第一个参数1,2,3一一对应,第二个参数是字符串。
    PreparedStatement使用没有错误
      

  3.   

    pstmt.setString(1,"%"+cond.trim()+"%") ;
    pstmt.setString(2,"%"+cond.trim()+"%") ; 
    pstmt.setString(3,"%"+cond.trim()+"%") ;
      

  4.   

    你用同样的条件,到数据库用 SQL 执行一下看看有没有
      

  5.   

    你的字符串中可能含有 SQL Server 的特殊字符了。
      

  6.   

    这种做法是没错的,我今天也刚好做到的这个,查询成功了,代码也和你差不多的
    ps.setString(1, "%"+s_keyword+"%");//句子就是这样写的,
    我反而是怀疑你的sql语句写错了,我看见你的那个select * 怪怪的,会不会是输入是时变成中文的输入
    ,你试试先将你的sql语句填上参数在你的数据库那边运行一下,确认sql语句无误再放到程序里面,有时候经常是出错在一些容易忽略的细节上啊
     
      

  7.   

    pstmt.setString(1,"%"+cond+"%") ;
    应该改成这样吧
    pstmt.setString(1,"'%"+cond+"%'") ;
    sql server 没用过,但oracle中是这样用的因为最终的效果应该是这样的"'%title1%'",而不是"%title1%"拿sql语句到数据库中执行一下,这是个好办法
      

  8.   

    试:
    String sql = "SELECT * FROM note WHERE title LIKE '%'+?+'%' or AUTHOR LIKE '%'+?+'%' or CONTENT LIKE '%'+?+'%'"; 
    PreparedStatement pstmt = null; 
    DataBaseConnection dbc = null; 
    dbc = new DataBaseConnection(); 
    try 

      pstmt = dbc.getConnection().prepareStatement(sql) ; 
      pstmt.setString(1, cond);//这里已经按照网上大部分去做的,我晕了 
      pstmt.setString(2, cond); 
      pstmt.setString(3, cond);
      // ...
      

  9.   

    调试一下,看传过来的参数是什么 把sql到查询分析器里面执行,看什么结果
      

  10.   

    public List<Emp> findAll(String keyWord) throws Exception{
    String sql="select empno,ename,jod.sal from emp  where ename like ? or job like ?";
    this.pstmt=this.conn.prepareStatement(sql);
    this.pstmt.setString(1,"%"+keyWord+"%");
    this.pstmt.setString(2,"%"+keyWord+"%");
    ResultSet rs=this.pstmt.executeQuery();
    }
    怎么都查不出来\\求解