Java 准备好的语句不完全有效 - MYSQL

Java Prepared Statements Not Entirely Working - MYSQL

我正在使用 Java Servlet 连接并将数据插入我的 MYSQL 数据库。我目前正在使用以下准备好的语句:

String query1 = "SELECT * FROM `user` WHERE `username` = ?;";
PreparedStatement stat1 = connection.prepareStatement(query1);
stat1.setString(1, username);
ResultSet result = stat1.executeQuery();
out.println("<h1> PREPARED STATEMENT WORKING </h1>");

使用这个,h1 header 不显示。

但是,我已经让这个工作了:

String query1 = "SELECT * FROM `user` WHERE `username` = \"" + username + "\";";
PreparedStatement stat1 = connection.prepareStatement(query1);
ResultSet result = stat1.executeQuery();

out.println("<h1> PREPARED STATEMENT WORKING </h1>");

使用这个方法,显示h1 header。我的问题是,我的工作方式是否不太安全?如果是这样,我怎样才能让第一种方法起作用?

尝试从您的查询中删除 ; 并告诉我们它是否有效。