异常信息:java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid call Statement method: {0}
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.executeQuery(Unknown Source)
at com.wsy.newBeanBO.getnewsBean(newBeanBO.java:18)
at com.wsy.servlet.newServlet.doGet(newServlet.java:34)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at com.wsy.Filter.ModifyCode.doFilter(ModifyCode.java:23)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
部分代码:处理与news表业务逻辑:(我的代码是这样写的)
public newsBean getnewsBean(String sql){
newsBean nb=new newsBean();

try{
cn=new connsqlserver().getConnection();
ps=cn.prepareStatement("select * from tb_news where id=?");
ps.setString(1,sql);
rs=ps.executeQuery(sql);
if(rs.next()){
//放入nb
nb.setId(rs.getInt("1"));
nb.setTitle(rs.getString("2"));
nb.setContent(rs.getString("3"));
nb.setAuthor(rs.getString("4"));
nb.setSubmittime(rs.getString("5"));}
}catch(Exception e){
e.printStackTrace();
}finally{
this.close();
}return nb;}
连接数据库部分代码是这样处理的:public Connection getConnection() { try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
cn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_net","sa","");
System.out.println("连接成功");
// Statement smt=cn.createStatement();
} catch (Exception e) {
e.printStackTrace();
}return cn;
}
public ResultSet executeQuery(String sql) {
if (cn == null)
cn=getConnection();
try {return cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE).executeQuery(sql);
} catch (Exception e) {
e.printStackTrace();
return null;} finally { }
},请高手帮我看看哪里出了问题,怎么改正

解决方案 »

  1.   

    ps=cn.prepareStatement("select * from tb_news where id=?");
    ps.setString(1,sql);
    rs=ps.executeQuery(sql);
      这三句是不是有些问题啊? 你的sql不就是"select * from tb_news where id=?"? 只需传递个id的值就行了。
    首先,你的方法里传递的sql是什么?如果是个id的值。那么我想你出错的原因应该是 这句。直接调用: rs=ps.executeQuery();。如果是个子查询语句,那也一样rs=ps.executeQuery(); 你试试吧。