亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在mysql SELECT查詢中使用文本字段輸入

如何在mysql SELECT查詢中使用文本字段輸入

慕娘9325324 2021-06-11 18:08:28
我正在使用 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 的代碼中,我想給出用戶在表單中輸入的值,然后檢查該值是否已存在于表單中。請在第一行幫助我。謝謝
查看完整描述

3 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

您應該使用 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,如果該查詢返回任何結果,所以這將是正確的方法,以確定是否存在記錄。


查看完整回答
反對 回復 2021-06-17
?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

ResultSet 就像一個表,它有一個游標。在開始時光標在第一行的上述所以isBeforeFirst()總是會返回true甚至沒有結果的ResultSet。


為了檢索結果,您需要將光標移動到下一行,為此您可以使用,


rs.next()

如果光標成功移動到下一行(這意味著有更多結果),true否則將返回false。由于您只需要第一個結果,您也可以使用,


rs.first()

確認返回的ResultSet.


嘗試,


if (rs.first()) {

  JOptionPane.showMessageDialog(null, "already");

}


查看完整回答
反對 回復 2021-06-17
?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

這是最終的代碼將完全正常工作。


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());

                }


查看完整回答
反對 回復 2021-06-17
  • 3 回答
  • 0 關注
  • 218 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號