Java If-else函数无法正常工作

Java If-else函数无法正常工作,java,mysql,function,if-statement,Java,Mysql,Function,If Statement,我是Java和MySQL新手,目前正试图完成我的任务,尽管我对IF函数有问题。我想根据客户ID将查询结果从MySQL打印到控制台,如果客户ID不存在,则显示一条错误消息 如果在数据库中找到该ID,数据将显示,但如果该ID不存在,则不会发生任何事情。任何帮助都将不胜感激 package cos106_assignment_april2015; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.

我是Java和MySQL新手,目前正试图完成我的任务,尽管我对IF函数有问题。我想根据客户ID将查询结果从MySQL打印到控制台,如果客户ID不存在,则显示一条错误消息

如果在数据库中找到该ID,数据将显示,但如果该ID不存在,则不会发生任何事情。任何帮助都将不胜感激

package cos106_assignment_april2015;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.sql.*;
import javax.swing.border.*;


public class ProductSearch {

JFrame f = new JFrame("Ray Sport Inc. | Product Search");
JTextField custIDF;

public ProductSearch() {
  JLabel search1, customer, empty;
    search1 = new JLabel("Enter Customer ID number to search for a customer's product records. Results print to console.");
    customer = new JLabel("Customer ID:");
    empty = new JLabel("");

  custIDF = new JTextField();

  JButton search, back;
    search = new JButton("Search");
    back = new JButton("Back to Menu");

  search.addActionListener(new ActionListener() {
    public void actionPerformed (ActionEvent e){

    String custID = custIDF.getText();

    try { 
    System.out.println("Establishing connection to the MySQL Database...");
    Connection conn = null;
    Statement stmt =null;
    String url = "jdbc:mysql://localhost:3306/raysportdb";
    String driver = "com.mysql.jdbc.Driver";
    String userName = "root"; 
    String password = "password";
    Class.forName(driver).newInstance();
    conn = DriverManager.getConnection(url,userName,password);
    stmt = conn.createStatement();
    System.out.println("Connection established. Connected to the customer and item records.");

        String sql = "select a.Customer_ID, c.Order_ID, b.Product_ID, \n" +
                     "b.Product_Name, b.Product_Type, c.Order_Quantity \n" +
                     "from customer a, product b, orders c \n" +
                     "where a.Customer_ID = '"+custID+"' and b.Product_ID = c.Product_ID \n" +
                     "and b.Product_Type = c.Product_Type_FK and a.Customer_ID = c.Customer_ID \n" +
                     "group by c.Order_ID order by a.Customer_ID";  

        ResultSet result = stmt.executeQuery(sql);
         while(result.next()){
             String cid = result.getString("a.Customer_ID");
            if (custID.equals (cid)) {

                String f2 = result.getString("c.Order_ID");
                String f3= result.getString("b.Product_ID");
                String f4 = result.getString("b.Product_Name");
                String f5 = result.getString("b.Product_Type");
                String f6 = result.getString("c.Order_Quantity");

                System.out.println("");
                System.out.println("Customer ID\t:"+ cid); 
                System.out.println("Order ID\t:" + f2);
                System.out.println("Product ID\t:" + f3);
                System.out.println("Product Name\t:" + f4);
                System.out.println("Product Type\t:" + f5);
                System.out.println("Order Quantity\t:" + f6);
                System.out.println("");
                                  }
            else {
                JOptionPane.showMessageDialog(null, "Customer ID does not exist!", "Error", JOptionPane.ERROR_MESSAGE);
                System.out.println("Customer ID does not exist in the database.");
                 }
           }
      conn.close();
    }

    catch (Exception err) {
       System.err.println("Error:"+ err.getMessage());
                            }}});


  back.addActionListener(new ActionListener() { 
  public void actionPerformed (ActionEvent e){
  new Menu();
  f.setVisible(false);}});

  JPanel p = new JPanel();
  p.setLayout(new GridLayout(6,2));
  p.setBorder(new TitledBorder("Product Search"));
  p.add(search1);
  p.add(empty);
  p.add(customer);
  p.add(custIDF);
  p.add(search);
  p.add(back);

  f.getContentPane().add(p);
  f.pack(); 
  f.setSize(585,284);
  f.setLocationRelativeTo(null);
  f.setVisible(true);
  f.setResizable(false);
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



}

public static void main(String ar[]){

new ProductSearch();
 } 
}
您必须在whileresult.next{如果结果对象为空,则不为null。 正如Java文档所述:

将光标从当前位置向前移动一行。A ResultSet游标最初位于第一行之前 对方法next的第一次调用使第一行成为当前行 第二次调用使第二行成为当前行,依此类推

事实上,如果在执行查询时发现任何结果,您将永远无法到达else
节。

您必须将代码粘贴到while循环之外。当查询未返回任何结果时,它将永远不会通过您的循环。您可以执行以下操作:

if (result.next()){
// your code goes here
} else {

JOptionPane.showMessageDialog(null, "Customer ID does not exist!", "Error", JOptionPane.ERROR_MESSAGE);
System.out.println("Customer ID does not exist in the database.");
}

if在循环中。如果您得到多个结果,则会为每个与您要查找的id不匹配的结果激发else。我怀疑if-else语句是否无效。看起来更多的是您没有得到任何结果。此外,在执行sql查询时,您应该尝试检查
if (result.next()){
// your code goes here
} else {

JOptionPane.showMessageDialog(null, "Customer ID does not exist!", "Error", JOptionPane.ERROR_MESSAGE);
System.out.println("Customer ID does not exist in the database.");
}