Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在mysql选择查询中使用textfield输入_Java_Mysql_Database - Fatal编程技术网

Java 如何在mysql选择查询中使用textfield输入

Java 如何在mysql选择查询中使用textfield输入,java,mysql,database,Java,Mysql,Database,我正在使用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的代码中,我想给出用户

我正在使用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的代码中,我想给出用户在表单中输入的值,然后检查该值是否已经存在于表单中


请在第一行帮我。谢谢

您应该使用
PreparedStatement
而不是常规语句。这比普通的
语句
更安全,并允许您避免

您可以这样更改查询:

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*fromtrytable,其中name=3


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

ResultSet就像一个表,它有一个光标。开始时,光标位于第一行上方,因此
isBeforeFirst()
将始终返回
true
,即使
ResultSet
中没有结果

为了检索结果,您需要将光标移动到下一行,为此,您可以使用

rs.next()
如果光标成功移动到下一行(这意味着有更多结果),它将返回
true
,否则
false
。因为你只需要第一个结果,你也可以使用

rs.first()
确认返回的
ResultSet
中有可用数据


试试看


这是最终的代码,威尔的工作非常好

try{
                    Class.forName("com.mysql.jdbc.Driver");
                    Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql","root","");
                    String query = "SELECT * FROM table_name WHERE name=?;";
                    PreparedStatement preparedStatement = conn.prepareStatement(query);
                    preparedStatement.setString(1,jtf.getText());
                    ResultSet rs = preparedStatement.executeQuery();
                    if(rs.next()==true){
                        JOptionPane.showMessageDialog(null,"Value already exist");
                    }
                    else{
                        JOptionPane.showMessageDialog(null,"Value not present");
                        String query1="INSERT INTO table_name(col_name) VALUES (?)";
                        preparedStatement = conn.prepareStatement(query1);
                        preparedStatement.setString(1,jtf.getText());
                        preparedStatement.execute();
                        JOptionPane.showMessageDialog(null,"DONE");

                    }
                    rs.close();
                    preparedStatement.close();
                }
                catch(Exception e){
                    System.out.println("Exception:"+e.getMessage());
                }

所以您有两个问题:如何在JavaNetBeans中声明变量,以及如何查询数据库?第二点,如果有人在检查的时候插入“8”,我试过了,但是还没有固定。请检查:Code:Error:@DhirendraSinghBisht哪个SQL语句出现了错误?@Zephyr感谢您的代码和解释对我帮助很大。感谢您的代码和解释对我帮助很大。@DhirendraSinghBisht我很高兴:)注意,它还将返回像“3alpha”@草莓这样的用户名-它将如何返回?我明白了。我假设
name
将是
integer
类型。可能是一个糟糕的假设,所以我更新了我的答案,加入了
。谢谢:)嗯,你认为;-)但我认为这不是准备弦的正确方法
try{
                    Class.forName("com.mysql.jdbc.Driver");
                    Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql","root","");
                    String query = "SELECT * FROM table_name WHERE name=?;";
                    PreparedStatement preparedStatement = conn.prepareStatement(query);
                    preparedStatement.setString(1,jtf.getText());
                    ResultSet rs = preparedStatement.executeQuery();
                    if(rs.next()==true){
                        JOptionPane.showMessageDialog(null,"Value already exist");
                    }
                    else{
                        JOptionPane.showMessageDialog(null,"Value not present");
                        String query1="INSERT INTO table_name(col_name) VALUES (?)";
                        preparedStatement = conn.prepareStatement(query1);
                        preparedStatement.setString(1,jtf.getText());
                        preparedStatement.execute();
                        JOptionPane.showMessageDialog(null,"DONE");

                    }
                    rs.close();
                    preparedStatement.close();
                }
                catch(Exception e){
                    System.out.println("Exception:"+e.getMessage());
                }