简体   繁体   English

Java类中的MySQL语法错误?

[英]MySQL Syntax error in Java class?

Im having trouble getting my query statement running. 我在运行查询语句时遇到麻烦。 Says there is a syntax error at the query statement but I'm pretty sure thats how it goes but clearly Im mistaken. 说查询语句中存在语法错误,但是我很确定这是怎么回事,但显然我误会了。 Here is part of the code: 这是代码的一部分:

private String url = "jdbc:mysql://localhost:3306/MatrixUsers";
private String dbName = "MatrixUsers";
private String driver = "com.mysql.jdbc.Driver";
private String userNameDB = "root"; 
private String passwordDB = "password1"; 

private Connection connectMe = null;
private PreparedStatement selectUsers = null;
private Statement st;
private ResultSet results;


public void validateUserFromDB() {


    try {
        Class.forName("com.mysql.jdbc.Driver");
        connectMe = DriverManager.getConnection(url, userNameDB, passwordDB);
        String newUser = "Sil";
        String query = "SELECT count(*) FROM MatrixUsers.Users WHERE userNames = ?;";

        selectUsers = connectMe.prepareStatement(query);
        selectUsers.setString(1, newUser);
        results = selectUsers.executeQuery(query);

        //System.out.println(results);
        if(results.next()) {
            String count = null;
                    count= results.getString(1);

            if(count == null)
                System.out.println("NO MATCH");
            else
                System.out.println("MATCH");

        }

        connectMe.close();


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


}

The error is this: 错误是这样的:

com.mysql.jdbc.exceptions.jdbc4.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 '?' at line 1

remove the ; 删除; after the question mark. 问号后。 and remove the query from results = selectUsers.executeQuery(query); 并从results = selectUsers.executeQuery(query);删除查询results = selectUsers.executeQuery(query);

results = selectUsers.executeQuery(query); will execute the query without replacement of the placeholder. 将执行查询而不替换占位符。 That is used for "static" queries. 这用于“静态”查询。

results = selectUsers.executeQuery(); will execute the statement wich was prepared earlier. 将执行之前准备好的语句。

remove semicolon and replace line: 删除分号并替换行:

results = selectUsers.executeQuery(query);

by this 这样

results = selectUsers.executeQuery();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM