实在没辙了 想了很多办法也没能解决
以下是主要代码:try{
    String inputStr = jTextField.getText();              //从文本域中获取输入的字符串
    String chineseQuery = "SELECT * FROM Table1 WHERE Chinese LIKE '%?%'";       //预备语句
    PreparedStatement chineseQueryStat = conn.prepareStatement(chineseQuery);
    System.out.println("1");                             //标记...
    chineseQueryStat.setString(1, inputStr);             //绑定宿主变量
    System.out.println("2");                             //标记...
    ResultSet rs = chineseQueryStat.executeQuery();      //查询并返回结果
    System.out.println("3");                             //标记...
    while(rs.next()){
        System.out.println(rs.getString(1));
        System.out.println(rs.getString(2));
        System.out.println(rs.getString(3));
    }
    System.out.println("4");                             //标记...
}catch(SQLException sqle){
    System.out.println(sqle.getLocalizedMessage());
}catch(NullPointerException npe){
    System.out.println(npe.getMessage());
}实际运行后发现控制台输出如下:
1
null就是说只运行到 System.out.println("1");
             chineseQueryStat.setString(1, inputStr);  就停止并抛出了NullPointerException            

解决方案 »

  1.   

    //System.out.println("1"); 的后面加上下面的代码看看chineseQueryStat 是否为空
    if(chineseQueryStat ==null){
       System.out.println("chineseQueryStat Is Null");
    }
      

  2.   

    have a try
    String chineseQuery = "SELECT * FROM Table1 WHERE Chinese LIKE  ?";
    ...
    chineseQueryStat.setString(1, "'%" + inputStr + "%'");
              
      

  3.   

    回weaponofpower:
      加上
          if(chineseQueryStat == null){ 
             System.out.println("ChineseQueryStat Is Null"); 
         }else{
     System.out.println("ChineseQueryStat Is't Null");
          }
      之后  控制台显示ChineseQueryStat Is't Null,说明是非空的~~
      

  4.   

    谢谢qybao不过现在又有新问题出现了
    控制台直接输出:
    1
    2
    3
    4
    而不显示查询的结果..
      

  5.   

    那就说明检索不到,你把sql文打出来,然后在access端执行试试看
      

  6.   

    好吧 现在问题挺奇怪:
    在这个程序的构造器中执行如下查询:
    "SELECT * FROM Table1 WHERE Chinese LIKE '%啊%'"
    控制台输出了所有结果。在程序运行中输入字符查询后输出
    1
    2
    3
    4在access中执行相同查询,结果没有任何结果输出。。
      

  7.   

    补充。。
    在access2000中执行查询
    SELECT * FROM Table1 WHERE Chinese LIKE  '×啊×';
    后(也就是把"%"号换成"*"号),查询成功.
    但是在java里换成"*"号还是没有用
      

  8.   

    英文也不行?怪了
    数据库驱动有问题吧
    重新下载一个Driver包看看
      

  9.   

    好了问题解决了
    原来如果用PreparedStatement的话在setString方法的参数里是不需要单引号的.