mysql报错You have an error in your SQL syntax;????

时间:2022-07-04 23:02:49
javax.servlet.ServletException: 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 'form customer where loginName='1'' at line 1

部分代码:
String sqlStr="select * from "+tablename+" where loginName=? and password=?";
stmt=conn.prepareStatement(sqlStr);
stmt.setString(1,username);
stmt.setString(2,password);
rs=stmt.executeQuery();

loginName 和password 都为varchar 
这到底是怎么回事啊??帮帮忙!!!

8 个解决方案

#1


你先把这条语句直接在数据库里执行一下,看看是怎样的。

#2


to use near 'form customer where loginName='1'' at line 1   
form?这个怎么会出现?楼主仔细看一下那个地方写错了没,程序
里是from 呀,如果真报错form 那就是驱动问题了

#3


把这句打印出来看一下,然后到数据库里执行,看行不???

#4


我是写的from,我也感到很奇怪。

#5


同问!!!!

#6


String sqlStr="select * from "+tablename+" where loginName=? and password=?"; 
stmt=conn.prepareStatement(sqlStr); 
stmt.setString(1,username); 
stmt.setString(2,password); 
rs=stmt.executeQuery(); 
请确认你的数据库里面也是loginName的字段

#7


SQL语句不符合语法
把语句打印出来,然后在MYSQL控制台里单独执行测试一下

#8


我的问题跟你的一样 刚刚解决 是应为占位符不能和 加号同时使用 
举个例子
"select   *   from   address.`liver` where " + SelectChange + "='" + SelectText+ "' limit " + 1 +","+ 10; 这样是正确的
如果用占位符的话能是
"select   *   from   address.`liver` where liver_name = ? limit ?, ?";
如果写成
"select   *   from   address.`liver` where " + SelectChange + "='" + SelectText+ "' limit ?,?";就是错的

#1


你先把这条语句直接在数据库里执行一下,看看是怎样的。

#2


to use near 'form customer where loginName='1'' at line 1   
form?这个怎么会出现?楼主仔细看一下那个地方写错了没,程序
里是from 呀,如果真报错form 那就是驱动问题了

#3


把这句打印出来看一下,然后到数据库里执行,看行不???

#4


我是写的from,我也感到很奇怪。

#5


同问!!!!

#6


String sqlStr="select * from "+tablename+" where loginName=? and password=?"; 
stmt=conn.prepareStatement(sqlStr); 
stmt.setString(1,username); 
stmt.setString(2,password); 
rs=stmt.executeQuery(); 
请确认你的数据库里面也是loginName的字段

#7


SQL语句不符合语法
把语句打印出来,然后在MYSQL控制台里单独执行测试一下

#8


我的问题跟你的一样 刚刚解决 是应为占位符不能和 加号同时使用 
举个例子
"select   *   from   address.`liver` where " + SelectChange + "='" + SelectText+ "' limit " + 1 +","+ 10; 这样是正确的
如果用占位符的话能是
"select   *   from   address.`liver` where liver_name = ? limit ?, ?";
如果写成
"select   *   from   address.`liver` where " + SelectChange + "='" + SelectText+ "' limit ?,?";就是错的