like ?";
这里面的?在你的数据库里面
用不用两边加上
单引号的阿?
like '%abc%'
单独这样
like %abc%
在你的数据库里面能不能用的呢?

解决方案 »

  1.   

    name = "'%"+name+"%'";
    SQL语句
    select  name from book where name like %book% 不行,
    应该是 select name from book where name like '%book%'
      

  2.   

    String sql="select name from book where name like ?";
    PreparedStatement ps = con.prepareStatement(sql);
    String name = "book";
    name = "%"+name+"%";
    ps.setString(name);
    ResultSet rs = ps.executeQuery();我测试的结果是可以的。但是setString函数的参数要求是2个。你试试看
    我写的是:
    ps.setString(1, name);我用的是resin+mysql
      

  3.   

    提示大家:PreparedStatement的用法和直接的SQL语句是不同的,在PreparedStatement中,不是直接写SQL而是把变量用?表示,然后在用setString赋值
    因此,可以这样用:
    String sql="select name from book where name like ?";
    PreparedStatement ps = con.prepareStatement(sql);
    String name = "book";
    name = "%"+name+"%";
    ps.setString(name);
    ResultSet rs = ps.executeQuery();而不用引号。
      

  4.   


    多谢楼上
    我想那个ps.setString(name);
    应该是楼主打少了,不是没有两个参数
    要不然楼主应该看到报错才对
      

  5.   

    多谢大家,
    ps.setString(name);
    确实是打少了ps.setString(1,name);
    是笔误,但是程序中没有笔误,难道大家真的能查到数据吗?我运行没有任何问题,只是说,查不到应该查的数据。
      

  6.   

    那么是不是你的数据库里面真的没有这样的数据?
    :)%book%
    匹配的时候两头各有一个字符,中间是book
    的这样的数据吧?
      

  7.   

    不是,因为我用那个语句在查询器中执行过,你们能用它查到数据吗?
    因为数据中有两条name为book的数据。
      

  8.   

    %book%
    其中的%表示任何字符以及空字符我用JDBC-ODBC连接SQL Server没有取到数据
      

  9.   

    我用JDBC-ODBC在windows2000访问access,SQLServer都有问题。
    连续2次用 rs.getString("name"),那么第二次就会返回null还有楼主的问题,总之JDBC-ODBC不好用。也许专用的Driver好一些。
    免费的JDBC-ODBC就是有问题啊。
      

  10.   

    加不加单引号在我的系统中体现不出来区别。(JDBC-ODBC,windows2000 server,SQL Server)我现在是采不到数据,也就是说数据集(resultSet)是空的,
    而不是rs.getString("name")返回null
    fander你能进入到while(rs.next())中去吗?难道这是PrepareStatement的硬伤。难道就没有人做过用PrepareStatement做过like查询的吗?
      

  11.   

    解决了!
    不是PrepareStatement的问题,就是JDBC-ODBC的问题。我用微软的JDBC for SQL Server就能得到结果了。
    大家不要用JDBC-ODBC了,问题太多了。如果用商业的JDBC-ODBC可能没问题。String wc_DBType = "SQLServer";
    String wc_JDBC = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
    String wc_DBConnectionString = "jdbc:microsoft:sqlserver://localhost:1433";
    String wc_username = "demo";
    String wc_password = "demo";
    Class.forName(wc_JDBC);
    java.sql.Connection con=null;
    con = java.sql.DriverManager.getConnection(wc_DBConnectionString, wc_username, wc_password);String sql="select name from class1 where name like ?";
    java.sql.PreparedStatement ps = con.prepareStatement(sql);
    String name = "留学";
    name = "%"+name+"%";
    ps.setString(1, name);
    java.sql.ResultSet rs = ps.executeQuery();
    while(rs.next())
    {
         out.println(rs.getString("name"));
    }
    rs.close();
    ps.close();
    con.close();结果:
    留学时讯
    出国留学
    留学研究
    留学生园地