实在没辙了 想了很多办法也没能解决
以下是主要代码: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
以下是主要代码: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
if(chineseQueryStat ==null){
System.out.println("chineseQueryStat Is Null");
}
String chineseQuery = "SELECT * FROM Table1 WHERE Chinese LIKE ?";
...
chineseQueryStat.setString(1, "'%" + inputStr + "%'");
加上
if(chineseQueryStat == null){
System.out.println("ChineseQueryStat Is Null");
}else{
System.out.println("ChineseQueryStat Is't Null");
}
之后 控制台显示ChineseQueryStat Is't Null,说明是非空的~~
控制台直接输出:
1
2
3
4
而不显示查询的结果..
在这个程序的构造器中执行如下查询:
"SELECT * FROM Table1 WHERE Chinese LIKE '%啊%'"
控制台输出了所有结果。在程序运行中输入字符查询后输出
1
2
3
4在access中执行相同查询,结果没有任何结果输出。。
在access2000中执行查询
SELECT * FROM Table1 WHERE Chinese LIKE '×啊×';
后(也就是把"%"号换成"*"号),查询成功.
但是在java里换成"*"号还是没有用
数据库驱动有问题吧
重新下载一个Driver包看看
原来如果用PreparedStatement的话在setString方法的参数里是不需要单引号的.