首页 > 解决方案 > 如何在 mysql SELECT 查询中使用文本字段输入

问题描述

我正在使用 Java netbeans 和 mysql。我想检查用户在文本字段 tf 中输入的值是否已经存在于 mysql 表中。

 String query1="SELECT * FROM trytable WHERE name='8'";
 ResultSet rs=stmt.executeQuery(query1);
if(rs.isBeforeFirst()==true){JOptionPane.showMessageDialog(null,"already");}

在上面的代码中代替 8 我想给出用户在表单中输入的值,然后检查该值是否已经存在于表单中。

请在第一行帮助我。谢谢

标签: javamysqldatabase

解决方案


您应该使用 aPreparedStatement而不是常规语句。这比普通的更安全Statement,可以避免SQL 注入问题

您可以像这样更改您的查询:

String query = "SELECT * FROM trytable WHERE name='?';";

请注意?查询末尾的 。这可以在您的代码中稍后在设置时替换PreparedStatement

PreparedStatement preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, userInput);

ResultSet rs = preparedStatement.executeQuery();
if (rs.next()) System.out.println("Record exists!");

在这里,您告诉准备好的语句将?查询中的第一个语句替换为userInput. 因此,如果用户输入 3,则执行的查询将是SELECT * FROM trytable WHERE name=3;.

另请注意,如果查询rs.next()返回true任何结果,则返回,因此这将是确定记录是否存在的正确方法。


推荐阅读