我的程序出现了点问题~网上也有解决方法~不过说的很笼统,我是菜鸟,看不懂~请高手说清楚点~我的代码是
package com.yxq.dao;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class DB {
private String className;
private String url;
private String username;
private String password;
private Connection con;
private PreparedStatement pstm;

public DB(){
className="com.mysql.jdbc.Driver";
url="jdbc:mysql://localhost:3306/db_luntan";
username="root";
password="123456";
try{
Class.forName(className);
}catch(ClassNotFoundException e){
System.out.println("加载数据库驱动程序失败!");
e.printStackTrace();
}
}
public void getCon(){
try {
con=DriverManager.getConnection(url,username,password);
} catch (SQLException e) {
System.out.println("获取数据库连接失败!");
e.printStackTrace();
}
}
public void doPstm(String sql,Object[] params){
if(sql!=null&&!sql.equals("")){
System.out.println(sql);
getCon();
try {
pstm=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
if(params==null){
params=new Object[0];
}
for(int i=0;i<params.length;i++){
pstm.setObject(i+1,params[i]);
}
pstm.execute();
} catch (SQLException e) {
System.out.println("调用DB类中doPstm方法时出错!");
e.printStackTrace();
}
}
}

public ResultSet getRs(){
try {
return pstm.getResultSet();
} catch (SQLException e) {
System.out.println("DB类中的getRs()方法出错!");
e.printStackTrace();
return null;
}
}

public int getUpdate(){
try {
return pstm.getUpdateCount();
} catch (SQLException e) {
e.printStackTrace();
return -1;
}
}

public void closed(){
try{
if(pstm!=null)
pstm.close();
}catch(Exception e){
System.out.println("关闭pstm对象失败!");
}
try{
if(con!=null)
con.close();
}catch(Exception e){
System.out.println("关闭con对象失败!");
}
}
}
然后出现的错误是:delete tb_bbs where bbs_id=?
调用DB类中doPstm方法时出错!
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where bbs_id='11'' at line 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3256)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1313)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:874)
at com.yxq.dao.DB.doPstm(DB.java:49)
at com.yxq.dao.OpDB.OpUpdate(OpDB.java:373)
at com.yxq.action.BbsAction.deleteRootBbs(BbsAction.java:357)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.yxq.filter.UserAccess.doFilter(UserAccess.java:31)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
删除出错!哪位高手能快点回复我啊~着急中~

解决方案 »

  1.   

    你的SQL语句错了“delete tb_bbs where bbs_id=?”
    应该是delete from tb_bbs where bbs_id=?
      

  2.   

    不好意思哦~这个是太马虎了~不过我主要不是这个问题~不知道是不是因为数据库的原因~比如说我后面的有一个添加版块的也是出现这个错误,
    代码如下:
          public ActionForward addBoard(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){
         HttpSession session=request.getSession();
         session.setAttribute("backMainPage","../board/boardAdd.jsp");     OpDB myOp=new OpDB();
        
         String validate=request.getParameter("validate");
         if(validate==null||validate.equals("")||!validate.equals("yes")){
         List classList=myOp.OpClassListShow();
         session.setAttribute("backClassList",classList);
         return mapping.findForward("result");
         }
         else{
         BoardForm boardform=(BoardForm)form;
         String classId=boardform.getBoardClassID();
         String boardName=Change.HTMLChange(boardform.getBoardName());
         String boardMaster=Change.HTMLChange(boardform.getBoardMaster());
         String boardPcard=Change.HTMLChange(boardform.getBoardPcard());
        
         ActionMessages messages=new ActionMessages();    
         String sql="select * from tb_board where board_name=? and board_classID=?";
         Object[] params={boardName,classId};
        
         if(myOp.OpBoardSingleShow(sql, params)!=null){
         System.out.println("添加版面- "+boardName+" 版面已经存在!");
         messages.add("adminOpR",new ActionMessage("luntan.admin.add.board.exist",boardName));
         }
         else{
         sql="select * from tb_user where user_name=?";
         Object[] params1={boardMaster};
        
         UserForm userform=myOp.OpUserSingleShow(sql, params1);
         if(userform==null){
         System.out.println("添加版面-"+boardMaster+" 版主不存在!");
         messages.add("adminOpR",new ActionMessage("luntan.admin.update.board.no.user",boardMaster));
         }
         else if(userform.getUserAble().equals("0")){
         System.out.println("添加版面-"+boardMaster+" 不是版主!");
         messages.add("adminOpR",new ActionMessage("luntan.admin.update.board.user.able",boardMaster));
         }
         else{
         sql="insert into tb_board values(?,?,?,?)";
         Object[] params2={classId,boardName,boardMaster,boardPcard};
        
         int i=myOp.OpUpdate(sql, params2);
         if(i<=0){
         System.out.println("添加版面失败!");
         messages.add("adminOpR",new ActionMessage("luntan.admin.add.board.E"));
         }
         else{
         boardform.clear();
         System.out.println("添加版面成功!");
         messages.add("adminOpR",new ActionMessage("luntan.admin.add.board.S"));
         }    
         }    
         }    
         saveErrors(request,messages);
         return mapping.findForward("result");
         }
        }
        
    错误如下:
    select * from tb_class
    select * from tb_board where board_name=? and board_classID=?
    select * from tb_user where user_name=?
    insert into tb_board values(?,?,?,?)
    调用DB类中doPstm方法时出错!
    java.sql.SQLException: Column count doesn't match value count at row 1
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3256)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1313)
    at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:874)
    at com.yxq.dao.DB.doPstm(DB.java:49)
    at com.yxq.dao.OpDB.OpUpdate(OpDB.java:373)
    at com.yxq.action.AdminAction.addBoard(AdminAction.java:405)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
    at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.yxq.filter.UserAccess.doFilter(UserAccess.java:31)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.yxq.filter.AdminAccess.doFilter(AdminAccess.java:31)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:619)
    添加版面失败!而且回复他人留言也会出错~并且没有错误提示,就是没有数据提交到数据库
      

  3.   

    java.sql.SQLException: Column count doesn't match value count at row 1:字段名数量不匹配
    你还是好好的检查一下你的SQL语句吧,全是SQL语句的错误