出错代码锁定在
List list = dao.QueryObject("from Login l where l.username='" + user+ "' and l.password='" + pass + "'");
是一个hibernate下的用户登录模块,得到用户输入的user password,对比数据库,有的话就存入list
报错是
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 '.login login0_ where login0_.username='' and login0_.password=''' at line 1SQL语法错误,HQL和SQL这里有什么不同么

解决方案 »

  1.   

    select * from 表名 where username='"+user+"'and password='"+pwd+"'"暂时没有发现错误在哪里。
      

  2.   

    确认下username,password是类的属性名还是表的列名
      

  3.   

    .login login0_ where login0_.username='' and login0_.password=''' at line 1 楼主你的这个是不是username 和 password没有传递过来值,因为这里显示的是 username = '' and password = ''。
      

  4.   

    List list = dao.QueryObject("from Login l where l.username='" + user+ "' and l.password='" + pass + "'");中username 和password应该是Login类实例的属性名,并且要有对应的set方法,一定不是表的列名。看到楼主的这种写法,就一直有个疑问,想请教一下QueryObject到底是方法还是类?
      

  5.   

    hibernate 中一直是这样写的,
    Query query=session.createQuery("from Login l where l.username=:username and l.password=:password");
    query.setString("username",user);
    query.setString("password",pass);
    List result = query.list();这样设置参数就不要担心标点符号的问题了。
    希望对楼主有所帮助,谢谢!
      

  6.   

    我是这样写的参考下吧。用的SSH框架
    package bit.jeffy.dao;import java.util.Iterator;
    import java.util.List;
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import bit.jeffy.orm.User;public class LogUserDao extends HibernateDaoSupport { private String hql="from User u where u.account_no=? and u.password=?";
    //log对象是log4j提供的日志对象,如果在进行数据库操作的过程中出现任何问题,都会通过Log对象记录下来
    private static final Log log=LogFactory.getLog(LogUserDao.class);
    protected void initDao(){

    }
    public boolean IsUserValid(String userid,String password)
    {
    String[] userlist=new String[2];
    userlist[0]=userid;
    userlist[1]=password;

    List ret=null;

    try{
    //调用getHibernateTemplate函数获取HibernateTemplate对象,然后该对象的find方法到持久化层查找指定的
    //用户名和密码
    ret=this.getHibernateTemplate().find(hql,userlist);
    }catch(Exception e){
    log.error(e.getMessage());//如果有异常,则把异常消息记录保存到日志中
    return false;
    }
    if(ret.size()>0)//如果返回的记录大于0,说明找到了
    return true;
    else //小于0则没找到
    return false;
    }
    public User getUser(String userid, String password){ String[] userlist=new String[2];
    userlist[0]=userid;
    userlist[1]=password;
    Iterator it=null;
    List ret=null;

    try{
    //调用getHibernateTemplate函数获取HibernateTemplate对象,然后该对象的find方法到持久化层查找指定的
    //用户名和密码
    ret=this.getHibernateTemplate().find(hql,userlist);
    it=ret.iterator();
    return (User)it.next();
    }catch(Exception e){
    log.error(e.getMessage());//如果有异常,则把异常消息记录保存到日志中
    return null;
    }
    }
    }
      

  7.   

    你把 user和password的字段顺序换过看看!