JDBC4 / MySQL语法错误:从mysql表中检索数据时

时间:2013-01-29 16:33:18

标签: mysql jdbc

下面的代码有什么问题吗?

String sql =“SELECT用户名,密码FROM REGCUSTOMERS”+“WHERE username =?AND password =?”;

我正在尝试从REGCUSTOMERS表的用户名和密码列中获取数据。

Eclipse错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以便在'=附近使用正确的语法?和密码=?'在第1行

 private boolean isAuthenticated(String userid, String password) {

    // JDBC logic to verify from database.

    try {
        Class.forName(driverName);
        Connection conn = null;
        PreparedStatement st = null;
        String sql = "SELECT username, password FROM REGCUSTOMERS" + "WHERE username = ? AND password = ?";

        conn = DriverManager.getConnection(databaseURL, USERNAME, PASSWORD);

        st = conn.prepareStatement(sql);
        ResultSet rs = st.executeQuery(sql);

        if (rs.getString("username") != userid && rs.getString("password") != password) {

            return false;
        }
        rs.close();
        st.close();
        conn.close();

    } catch (Exception e) {
        e.printStackTrace();
    } 
    return true;

}

2 个答案:

答案 0 :(得分:2)

REGCUSTOMERS和WHERE之间没有空格。添加空间,你应该没事:

    String sql = "SELECT username, password FROM REGCUSTOMERS " + "WHERE username = ? AND password = ?";

答案 1 :(得分:1)

这部分:

... FROM REGCUSTOMERS" + "WHERE username ...

将导致以下SQL:

FROM REGCUSTOMERSWHERE

那当然是错的。

+在那里没有意义,但如果你想要它,你至少需要一个空间

"... FROM REGCUSTOMERS " + "WHERE username ..."