问题描述
出错代码锁定在Listlist=dao.QueryObject("fromLoginlwherel.username='"+user+"'andl.password='"+pass+"'");是一个hibernate下的用户登录模块,得到用户输入的userpassword,对比数据库,有的话就存入list报错是com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'.loginlogin0_wherelogin0_.username=''andlogin0_.password='''atline1SQL语法错误,HQL和SQL这里有什么不同么
解决方案
解决方案二:
select*from表名whereusername='"+user+"'andpassword='"+pwd+"'"暂时没有发现错误在哪里。
解决方案三:
引用楼主sinval的回复:
出错代码锁定在Listlist=dao.QueryObject("fromLoginlwherel.username='"+user+"'andl.password='"+pass+"'");是一个hibernate下的用户登录模块,得到用户输入的userpassword,对比数据库,有的话就存入list报错是com.mysql.jdbc.exce……
确认下username,password是类的属性名还是表的列名
解决方案四:
你看下hibernate中的语法
解决方案五:
得看Login表中的定义个格式
解决方案六:
.loginlogin0_wherelogin0_.username=''andlogin0_.password='''atline1楼主你的这个是不是username和password没有传递过来值,因为这里显示的是username=''andpassword=''。
解决方案七:
Listlist=dao.QueryObject("fromLoginlwherel.username='"+user+"'andl.password='"+pass+"'");中username和password应该是Login类实例的属性名,并且要有对应的set方法,一定不是表的列名。看到楼主的这种写法,就一直有个疑问,想请教一下QueryObject到底是方法还是类?
解决方案八:
hibernate中一直是这样写的,Queryquery=session.createQuery("fromLoginlwherel.username=:usernameandl.password=:password");query.setString("username",user);query.setString("password",pass);Listresult=query.list();这样设置参数就不要担心标点符号的问题了。希望对楼主有所帮助,谢谢!
解决方案九:
我是这样写的参考下吧。用的SSH框架packagebit.jeffy.dao;importjava.util.Iterator;importjava.util.List;importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;importorg.apache.commons.logging.Log;importorg.apache.commons.logging.LogFactory;importbit.jeffy.orm.User;publicclassLogUserDaoextendsHibernateDaoSupport{privateStringhql="fromUseruwhereu.account_no=?andu.password=?";//log对象是log4j提供的日志对象,如果在进行数据库操作的过程中出现任何问题,都会通过Log对象记录下来privatestaticfinalLoglog=LogFactory.getLog(LogUserDao.class);protectedvoidinitDao(){}publicbooleanIsUserValid(Stringuserid,Stringpassword){String[]userlist=newString[2];userlist[0]=userid;userlist[1]=password;Listret=null;try{//调用getHibernateTemplate函数获取HibernateTemplate对象,然后该对象的find方法到持久化层查找指定的//用户名和密码ret=this.getHibernateTemplate().find(hql,userlist);}catch(Exceptione){log.error(e.getMessage());//如果有异常,则把异常消息记录保存到日志中returnfalse;}if(ret.size()>0)//如果返回的记录大于0,说明找到了returntrue;else//小于0则没找到returnfalse;}publicUsergetUser(Stringuserid,Stringpassword){String[]userlist=newString[2];userlist[0]=userid;userlist[1]=password;Iteratorit=null;Listret=null;try{//调用getHibernateTemplate函数获取HibernateTemplate对象,然后该对象的find方法到持久化层查找指定的//用户名和密码ret=this.getHibernateTemplate().find(hql,userlist);it=ret.iterator();return(User)it.next();}catch(Exceptione){log.error(e.getMessage());//如果有异常,则把异常消息记录保存到日志中returnnull;}}}
解决方案十:
你把user和password的字段顺序换过看看!