免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1540 | 回复: 2
打印 上一主题 下一主题

struts+jdbc的问题?连数据库时出现下面的错误? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-08 14:55 |只看该作者 |倒序浏览
我的类是这样的:package org.vcs.contract.dao;
import org.vcs.contract.dto.*;
import org.vcs.contract.exceptions.*;
public interface SysuserDao {
  /**
         * Inserts a new row in the Sysuser table.
         */
        public void Insert(Sysuser dto)throws SysuserDaoException;
        /**
         * Updates a single row in the Sysuser table.
         */
        //public void Update(Sysuser dto);
        /**
         * Deletes a single row in the Sysuser table.
         */
        //public void Delete(Sysuser dto);
        /**
         * checkuser a single row in the Sysuser table.
         */
        public boolean CheckSysuser(Sysuser dto)throws SysuserDaoException;


}
package org.vcs.contract.dto;
import java.util.Date;
import java.io.Serializable;
public class Sysuser implements Serializable{
  /**
         * This attribute maps to the column userid in the sysuser table.
         */
  private String userid;
  /**
         * This attribute maps to the column username in the sysuser table.
         */
  private String username;
  /**
         * This attribute maps to the column password in the sysuser table.
         */
  private String password;
  /**
         * This attribute maps to the column lastlogin in the sysuser table.
         */
  private Date lastlogin;
  public void setUserid(String userid){
    this.userid=userid;
  }
  public String getUserid(){
    return this.userid;
  }
  public void setUsername(String username){
    this.username=username;
  }
  public String getUsername(){
    return this.username;
  }
  public void setPassword(String password){
    this.password=password;
  }
  public String getPassword(){
    return this.password;
  }
  public void setLastlogin(Date lastlogin){
    this.lastlogin=lastlogin;
  }
  public Date getLastlogin(){
    return this.lastlogin;
  }
  /**
   * @param other
   * @return boolean
   */
  public boolean equals(Object other){
    if(other==null){
      return false;
    }
    if(other==this){
      return true;
    }
    if(!(other instanceof Sysuser)){
      return false;
    }
    final Sysuser cast = (Sysuser) other;
    if(userid==null ? cast.userid!=userid:!userid.equals(cast.userid)){
      return false;
    }
    if(username==null ? cast.username!=username:!username.equals(cast.username)){
      return false;
    }
    if(password==null ? cast.password!=password:!password.equals(cast.password)){
      return false;
    }
    if(lastlogin==null ? cast.lastlogin!=lastlogin:!lastlogin.equals(cast.lastlogin)){
      return false;
    }

    return true;
  }
  /**
   * @return int
   */
  public int hashCode(){
    int _hashCode=0;
    if(userid==null){
      _hashCode=29*_hashCode+userid.hashCode();
    }
    if(username==null){
      _hashCode=29*_hashCode+username.hashCode();
    }
    if(password==null){
      _hashCode=29*_hashCode+password.hashCode();
    }
    if(lastlogin==null){
      _hashCode=29*_hashCode+lastlogin.hashCode();
    }
    return _hashCode;
  }
  /**
   * @return String
   */
  public String toString(){
    StringBuffer ret=new StringBuffer();
    ret.append("org.vcs.contract.dto.Sysuser:";
    ret.append("userid='"+userid+"'";
    ret.append("username='"+username+"'";
    ret.append("password='"+password+"'";
    ret.append("lastlogin='"+lastlogin+"'";
    return ret.toString();
  }
  public Sysuser() {
  }
}
package org.vcs.contract.factory;
import java.sql.Connection;
import org.vcs.contract.dao.*;
import org.vcs.contract.jdbc.*;
public class SysuserDaoFactory {
  private static final SysuserDaoImpl dao = new SysuserDaoImpl();
  public SysuserDaoFactory() {
  }
  /**
         * Method 'create'
         *
         * @return SysuserDao
         */

  public static SysuserDao create(){
    return dao;
  }
  /**
         * Method 'create'
         *
         * @param conn
         * @return SysuserDao
         */
        public static SysuserDao create(Connection conn)
        {
                return  new SysuserDaoImpl(conn);
        }

}
package org.vcs.contract.jdbc;
import java.sql.*;

public class ResourceManager
{
    private static String JDBC_DRIVER   = "sun.jdbc.odbc.JdbcOdbcDriver";
    private static String JDBC_URL      = "jdbcdbc:erp";

    private static String JDBC_USER     = "sa";
    private static String JDBC_PASSWORD = "jpzhang28";

    private static Driver driver = null;

    public static synchronized Connection getConnection()
        throws SQLException
    {
        if (driver == null)
        {
            try
            {
                Class jdbcDriverClass = Class.forName( JDBC_DRIVER );
                driver = (Driver) jdbcDriverClass.newInstance();
                DriverManager.registerDriver( driver );
            }
            catch (Exception e)
            {
                System.out.println( "Failed to initialise JDBC driver" );
                e.printStackTrace();
            }
        }

        return DriverManager.getConnection(
                JDBC_URL,
                JDBC_USER,
                JDBC_PASSWORD
        );
    }


        public static void close(Connection conn)
        {
                try {
                        if (conn != null) conn.close();
                }
                catch (SQLException sqle)
                {
                        sqle.printStackTrace();
                }
        }

        public static void close(PreparedStatement stmt)
        {
                try {
                        if (stmt != null) stmt.close();
                }
                catch (SQLException sqle)
                {
                        sqle.printStackTrace();
                }
        }

        public static void close(ResultSet rs)
        {
                try {
                        if (rs != null) rs.close();
                }
                catch (SQLException sqle)
                {
                        sqle.printStackTrace();
                }

        }

}
package org.vcs.contract.jdbc;
import org.vcs.contract.exceptions.*;
import org.vcs.contract.dao.*;
import org.vcs.contract.dto.*;
import org.vcs.contract.factory.*;
import org.vcs.contract.jdbc.*;
import java.sql.Connection;
import java.sql.Types;
import java.util.Collection;
import org.apache.log4j.Logger;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Time;
import java.util.List;
import java.util.Iterator;
import java.util.ArrayList;
public class SysuserDaoImpl implements SysuserDao{
  /**
   * The factory class for this DAO has two versions of the create() method - one that
   takes no arguments and one that takes a Connection argument. If the Connection version
   is chosen then the connection will be stored in this attribute and will be used by all
   calls to this DAO, otherwise a new Connection will be allocated for each operation.
   */
  protected java.sql.Connection userConn;
  protected static final Logger logger = Logger.getLogger(SysuserDaoImpl.class);
  /**
         * All finder methods in this class use this SELECT constant to build their queries
         */
        protected final String SQL_SELECT = "SELECT userid,username,password,lastlogin FROM " + getTableName() + "";
        /**
         * Finder methods will pass this value to the JDBC setMaxRows method
         */
       private int maxRows;
      
       /**
        * SQL INSERT statement for this table
        */
       protected final String SQL_INSERT = "INSERT INTO " + getTableName() + " (userid,username,password,lastlogin) VALUES ( ?, ? ,?,?)";
       /**
          * SQL UPDATE statement for this table
          */
         protected final String SQL_UPDATE = "UPDATE " + getTableName() + " SET jfbm = ?, jfmc = ? WHERE jfbm = ?";

         /**
          * SQL DELETE statement for this table
          */
         protected final String SQL_DELETE = "DELETE FROM " + getTableName() + " WHERE jfbm = ?";
         /**
          * SQL CheckSysuser statement for this table
          */
         protected final String SQL_SYSUSER="SELECT username,password"+getTableName()+"WHERE username=? and password=?";
         /**
          * Index of column jfbm
          */
         protected static final int COLUMN_JFBM = 1;

         /**
          * Index of column jfmc
          */
         protected static final int COLUMN_JFMC = 2;

         /**
          * Number of columns
          */
         protected static final int NUMBER_OF_COLUMNS = 2;

         /**
          * Index of primary-key column jfbm
          */
         protected static final int PK_COLUMN_JFBM = 1;
         /**
          * Method 'JfDaoImpl'
          *
          * @param userConn
          */
         public SysuserDaoImpl(final java.sql.Connection userConn)
         {
                 this.userConn = userConn;
         }
         /**
         * Method 'getTableName'
         *
         * @return String
         */
        public String getTableName()
        {
                return "Sysuser";
        }
        public void Insert(Sysuser dto)throws SysuserDaoException{
               long t1 = System.currentTimeMillis();
                // declare variables
                final boolean isConnSupplied = (userConn != null);
                Connection conn = null;
                PreparedStatement stmt = null;
                ResultSet rs = null;
                try {
                        // get the user-specified connection or get a connection from the ResourceManager
                        conn = isConnSupplied ? userConn : ResourceManager.getConnection();

                        stmt = conn.prepareStatement( SQL_INSERT );
                        //stmt.setString(1,dto.getUserid());
                        stmt.setString(2, dto.getUsername());
                        stmt.setString(3, dto.getPassword());
                        stmt.setTimestamp(4, dto.getLastlogin()==null ? null : new java.sql.Timestamp( dto.getLastlogin().getTime()));
                       
                     
                        int rows=stmt.executeUpdate();
                        
                }
                catch (SQLException _e) {
                        logger.error( "SQLException: " + _e.getMessage(), _e );
                        throw new SysuserDaoException( "SQLException: " + _e.getMessage(), _e );
                }
                catch (Exception _e) {
                        logger.error( "Exception: " + _e.getMessage(), _e );
                        throw new SysuserDaoException( "Exception: " + _e.getMessage(), _e );
                }
                finally {
                        ResourceManager.close(stmt);
                        if (!isConnSupplied) {
                                ResourceManager.close(conn);
                        }

                }

        }
        public boolean CheckSysuser(Sysuser dto)throws SysuserDaoException{
                // declare variables
                final boolean isConnSupplied = (userConn != null);
                Connection conn = null;
                PreparedStatement stmt = null;
                ResultSet rs = null;
                try{
                  conn = isConnSupplied ? userConn : ResourceManager.getConnection();
                  stmt = conn.prepareStatement(SQL_SYSUSER);
                  stmt.setString(2,dto.getUsername());
                  stmt.setString(3,dto.getPassword());
                  rs=stmt.executeQuery();
                  if(rs.next()){
                    return true;
                  }else{
                    return false;
                  }
                  
                }catch(Exception e){
                  e.printStackTrace();
                }

          return false;
        }

  public SysuserDaoImpl() {
   
  }
}
  package org.vcs.contract.struts.action;

import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import org.vcs.contract.struts.forms.LoginForm;
import org.apache.struts.action.Action;
import org.vcs.contract.factory.*;
import org.vcs.contract.dao.*;
import org.vcs.contract.dto.*;
public class Login extends Action {
  public ActionForward execute(ActionMapping mapping,
                               ActionForm form,
                               HttpServletRequest request,
                               HttpServletResponse response) throws Exception{
    LoginForm loginForm = (LoginForm) form;
    // create the DAO class
    SysuserDao dao = SysuserDaoFactory.create();
    Sysuser dto = new Sysuser();
    dto.setUsername(loginForm.getUsername());
    dto.setPassword(loginForm.getPassword());
    if (!dao.CheckSysuser(dto)) {
      return mapping.findForward("success";
    }
    else {
      return mapping.findForward("faliure";
    }
  }
}
package org.vcs.contract.struts.action;

import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.Action;

public class reg
    extends Action {
  public ActionForward execute(ActionMapping actionMapping,
                               ActionForm actionForm,
                               HttpServletRequest servletRequest,
                               HttpServletResponse servletResponse) {
    return actionMapping.findForward("reg";
  }
}

package org.vcs.contract.struts.action;

import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import org.vcs.contract.struts.forms.RegForm;
import org.apache.struts.action.Action;
import org.vcs.contract.factory.SysuserDaoFactory;
import org.vcs.contract.dao.*;
import org.vcs.contract.dto.*;
import org.vcs.contract.factory.*;
import java.sql.Time;
import java.sql.Timestamp;
public class SysuserSave
    extends Action {
  public ActionForward execute(ActionMapping mapping,
                               ActionForm form,
                               HttpServletRequest request,
                               HttpServletResponse response)throws Exception {
    RegForm regForm = (RegForm) form;
    // create the DAO class
    SysuserDao dao = SysuserDaoFactory.create();
    Sysuser dto = new Sysuser();
    Timestamp dt=new Timestamp(1);
    dto.setUsername(regForm.getUsername());
    dto.setPassword(regForm.getPassword());
    dto.setLastlogin(dt);
    dao.Insert(dto);
    return mapping.findForward("success";
  }
}

我想输入用户名和密码进行登陆,不输入就可以进去了,我保存数据时提示这样的错误?
HTTP Status 500 -

--------------------------------------------------------------------------------




root cause

org.vcs.contract.exceptions.SysuserDaoException: SQLException: [Microsoft][ODBC SQL Server Driver]COUNT field incorrect or syntax error
        at org.vcs.contract.jdbc.SysuserDaoImpl.Insert(SysuserDaoImpl.java:114)
        at org.vcs.contract.struts.action.SysuserSave.execute(SysuserSave.java:30)
        at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
        at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
        at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
        at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:82
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:534)
Caused by: java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]COUNT field incorrect or syntax error
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:695
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
        at sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:3150)
        at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(JdbcOdbcPreparedStatement.java:214)
        at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeUpdate(JdbcOdbcPreparedStatement.java:136)
        at org.vcs.contract.jdbc.SysuserDaoImpl.Insert(SysuserDaoImpl.java:109)
        ... 36 more



--------------------------------------------------------------------------------

Apache Tomcat/4.1.30
请问我要如何改呀?请大歌大姐帮帮我呀,在线等

论坛徽章:
0
2 [报告]
发表于 2006-03-08 15:14 |只看该作者
at org.vcs.contract.jdbc.SysuserDaoImpl.Insert(SysuserDaoImpl.java:114)

这是哪行?

基本上是执行SQL写错了

论坛徽章:
0
3 [报告]
发表于 2006-03-08 16:41 |只看该作者
//stmt.setString(1,dto.getUserid());
这句为啥注释掉?


还有请楼主发代码时使用[code]标记。先分析一下错误信息,描述问题关键地方,就不用贴这么一大堆code了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP