哪位高手帮忙解决下面问题:
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExcep
tion: 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 password like
'w%'' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct
orAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC
onstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1053)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2468)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2629)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2719)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.ja
va:2155)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:
2318)
at PreparedStatementDemo.main(PreparedStatementDemo.java:23)下面是代码:
import java.sql.*;
import java.text.SimpleDateFormat;
public class PreparedStatementDemo
{
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
public static final String DBURL = "jdbc:mysql://localhost:3306/mldn";
public static final String DBUSER = "root";
public static final String DBPASS = "mysqladmin";
public static void main(String args[]) throws Exception
{
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "select id, name, password, age, sex, birthday" +
"from user where password like ? ";
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
pstmt = conn.prepareStatement(sql);
//pstmt.setString(1,keyword+"%");
pstmt.setString(1,"w%");
//pstmt.setString(3,keyword+"%");
rs = pstmt.executeQuery();
while(rs.next())
{
int id = rs.getInt(1);
String name = rs.getString(2);
String pass = rs.getString(3);
int age = rs.getInt(4);
String sex = rs.getString(5);
java.util.Date d = rs.getDate(6);
System.out.print("编号: " + id + "; ");
System.out.print("姓名: " + name + "; ");
System.out.print("密码: " + pass + "; ");
System.out.print("年龄: " + age + "; ");
System.out.print("性别: " + sex + "; ");
System.out.println("生日: " + d + "; ");
}
rs.close();
pstmt.close();
conn.close();
}}
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExcep
tion: 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 password like
'w%'' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct
orAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC
onstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1053)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2468)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2629)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2719)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.ja
va:2155)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:
2318)
at PreparedStatementDemo.main(PreparedStatementDemo.java:23)下面是代码:
import java.sql.*;
import java.text.SimpleDateFormat;
public class PreparedStatementDemo
{
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
public static final String DBURL = "jdbc:mysql://localhost:3306/mldn";
public static final String DBUSER = "root";
public static final String DBPASS = "mysqladmin";
public static void main(String args[]) throws Exception
{
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "select id, name, password, age, sex, birthday" +
"from user where password like ? ";
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
pstmt = conn.prepareStatement(sql);
//pstmt.setString(1,keyword+"%");
pstmt.setString(1,"w%");
//pstmt.setString(3,keyword+"%");
rs = pstmt.executeQuery();
while(rs.next())
{
int id = rs.getInt(1);
String name = rs.getString(2);
String pass = rs.getString(3);
int age = rs.getInt(4);
String sex = rs.getString(5);
java.util.Date d = rs.getDate(6);
System.out.print("编号: " + id + "; ");
System.out.print("姓名: " + name + "; ");
System.out.print("密码: " + pass + "; ");
System.out.print("年龄: " + age + "; ");
System.out.print("性别: " + sex + "; ");
System.out.println("生日: " + d + "; ");
}
rs.close();
pstmt.close();
conn.close();
}}
是sql语句写错啦,birthday后面应该有一个空格,或者from前面有一个空格。
String sql = "select id, name, password, age, sex, birthday" +
"from user where password like ? ";
"from user where password like ? ";
pstmt.setString(1,"w%");
最好不要这样写 看着很纠结