完整的代码 
public void timesearch() { 
textArea.setText(""); 
String day; 
day = (textField_1.getText().trim()); System.out.println(day); 
try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
conn = DriverManager.getConnection("jdbc:odbc:project"); 
pst = conn 
.prepareStatement ("select * from storesave where (liushuidanhao like ? ) order by liushuidanhao"); 
pst.setString(1, day+"%" ); rs=pst.executeQuery(); 
while(rs.next()){ 
System.out.println("1"); 
textArea.setText(textArea.getText() + "流水单号:" 
+ rs.getString("liushuidanhao") + "  工单号:" 
+ rs.getString("gongdanhao") + "  油漆名称" 
+ rs.getString("mingchen") + "  总价" 
+ rs.getString("totalprice") + "\n"); 

} catch (Exception ee) { 
ee.printStackTrace(); } finally { 
conn = null; 
rs = null; 
pst = null; 
} } 我的意思是要做一个模糊查询  SELECT * FROM storesave WHERE liushuidanhao like '20090605%' order by liushuidanhao    直接复制进sql里运行成功 
在这里 我传进去的"%" 始终被认为是字符  而不是sql的通配符  导致搜索无记录符合 结果集为空 无法进入循环
麻烦谁能指点一下
已经折腾第3天了。...一点进展都没...
网上也找过 有人说加上[] 就可以  我也试过了
我想这应该不是个很冷门的问题吧?应该遇到的几率还是会满高的吧?

解决方案 »

  1.   

    like '%20090605%' 
    2边都要加上%才可以
      

  2.   

    我查询的时候都是2边带%啊,没出过毛病,都查出来了
    我看你定义完sql语句又调用了一个setString方法,之后你的sql语句是不是变化了?你debug一下,最后的执行语句发一下呗
      

  3.   

    day = day+'%';
    pst = conn 
    .prepareStatement ("select * from storesave where liushuidanhao like " + day + " order by liushuidanhao"); 
    rs=pst.executeQuery(); 如果是access的可以通配符不一样.
    http://jht.cnblogs.com/archive/2006/05/10/396781.html
    -------------------------------------------------------- ACCESS模糊查询出现的变态问题,不知道该问题的希望注意,知道内幕的高手还望给小弟一个解释 Thanks在SQL Server中模糊查询通常是这样的Select * from articleTable where authorName like '%jacky%'
    但是在Access中用这条语句执行的时候竟然发现查不出结果,怎么可能呢?后来查了下资料,发现问题如下:
    要进行模糊查找,则必须使用通配符,ACCESS库的通配符和SQL SERVER的通配符不一样。
    ACCESS库的通配符为:
    *  与任何个数的字符匹配。
    ?  与任何单个字母的字符匹配
    在SQL Server中的通配符为:
    % 与任何个数的字符匹配
    -  与单个字符匹配但是又发现,C#连接到Access数据库之后,用这样一条语句Select * from articleTable where authorName like '*jacky*' (注意,这边按照上述通配符的要求将%修改为*了)竟然搜索不到应该存在的N条记录,我靠!怎么可能呢?明明直接在Access中执行的时候是有结果的呀!!!虽然找到了答案(ADO),但是我还是不理解,希望有高手指教以下
      

  4.   

    经MS SQL2000测试,没有问题.
      

  5.   

    mysql测试没问题,应该是数据库的问题,
    可能是你的数据库默认通配符不是'%',加上设置通配符的语句试试
      

  6.   

    sorryday = day+'%';
    pst = conn
    .prepareStatement ("select * from storesave where liushuidanhao like '" + day + "' order by liushuidanhao"); 
      

  7.   

    day = day+'%'; 
    pst = conn 
    .prepareStatement ("select * from storesave where liushuidanhao like '" + day + "' order by liushuidanhao"); 
    rs=pst.executeQuery(); 最后测试这样成功了
    注意多加了2个'   '
    谢谢
      

  8.   

    这是我写的代码,LZ参考下,我用的是SQL 2005的数据库import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    public class TestJdbc { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";  //加载JDBC驱动
      String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=testDB";  //连接服务器和数据库sample
      String userName = "sa";  //默认用户名
      String userPwd = "admin1234567";  //密码
      Connection dbConn;
      PreparedStatement ps;
      ResultSet rs;
      String sql = "select * from userTable where user_ID like ? order by user_ID";
      String id = "1";
      try {
       Class.forName(driverName);
       dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
       System.out.println("Connection Successful!");  //如果连接成功 控制台输出Connection Successful!
       ps = dbConn.prepareStatement(sql);
       ps.setString(1, "%" + id + "%");
       rs = ps.executeQuery();
       
       while (rs.next()) {
       System.out.println("user_ID:" + rs.getString("user_ID"));
       }
      } catch (Exception e) {
       e.printStackTrace();
      }

    }}程序运行结果如下:
    Connection Successful!
    user_ID:1
    user_ID:11
    user_ID:111
    user_ID:1111感觉没什么问题,
    应该是每个数据库的问题