jdbc的问题, sql语句出错
- Java code
String sql="select * from ?"; ResultSet rst=SqlHelper.select(sql,"Product"); while(rst.next()){ System.out.println(rst.getString(1)); }[Microsoft][ODBC Microsoft Access Driver] Parameter 'Pa_RaM000' specified where a table name is required.
这个问号的地方写的有问题吗???
我换了别的方法也是现实sql语句出错
[解决办法]
public void testSql() throws SQLException {
String sql="select * from Product";
ResultSet rst=SqlHelper.select(sql,"");
while(rst.next()){
System.out.println(rst.getString(1));
}
}
写成这样子试试 ?
[解决办法]
public static ResultSet select(String sql,String parameters){
try{con=getCon();
ps=con.prepareStatement(sql);
//给问号赋值
// if(parameters!=null){
// for(int i=0;i<parameters.length;i++){
// ps.setString(i+1,parameters[i]);
// }
// }
ps.setString(1,parameters);
rst=ps.executeQuery();
}catch(Exception e){
e.printStackTrace();//开发阶段
//抛出异常
throw new RuntimeException(e.getMessage());
}
return rst;
}
修改成
- Java code
public static ResultSet select(String sql,String parameters){ try{con=getCon(); ps=con.prepareStatement(sql); //给问号赋值if (!"".equals(parameters)) ps.setString(1,parameters); rst=ps.executeQuery(); }catch(Exception e){ e.printStackTrace();//开发阶段 //抛出异常 throw new RuntimeException(e.getMessage()); } return rst; }
[解决办法]
这样写?代替表,压根就找不到表面,你得指定一下表名试试看
[解决办法]
?只能对参数赋值,不能作为本身传递给sql。所以想:select ? from ?这样的同学注意了。肯定会报错的,找不到列,找不到表。