Java 如何使用if-else语句输入非字段的值并返回;“未找到”;

Java 如何使用if-else语句输入非字段的值并返回;“未找到”;,java,mysql,if-statement,jdbc,Java,Mysql,If Statement,Jdbc,正如标题所说。我很难返回一个表示“未找到”的值, 当我尝试输入一个不在范围内的值时 附言:我是新来的,所以要温柔。呵呵 public static void checkStatus(String ID_No) throws SQLException{ try{ ResultSet rs; String validStatus = "SELECT * FROM validation"; st = connection.createStatement(); r

正如标题所说。我很难返回一个表示“未找到”的值, 当我尝试输入一个不在范围内的值时

附言:我是新来的,所以要温柔。呵呵

public static void checkStatus(String ID_No) throws SQLException{
    try{
    ResultSet rs;
    String validStatus = "SELECT * FROM validation";
    st = connection.createStatement();
    rs = st.executeQuery(validStatus);

        while(rs.next()){
            getStudValid = rs.getString("ID_No");
            getValidStatus = rs.getString("Validation");
                if (!getValidStatus.equals("Accepted") && getStudValid.equals(ID_No)){
                    System.out.println("Student " + getStudValid + " Please complete the required pre-requisite processes.");
                } else if (getValidStatus.equals("Accepted") && getStudValid.equals(ID_No)){
                    System.out.println("Student " + getStudValid + " You are Enrolled!");
                } 
        } 

    rs.close();
    } catch(SQLException e){
        System.out.println("Updated "+ ID_No);

    }
}

在返回
字符串“notfound”
的方法中使用
if-else条件

改变

public static void checkStatus(String ID_No) throws SQLException{

public static String checkStatus(String ID_No) throws SQLException{

然后
返回一个字符串,无论是成功还是“未找到”
您可以开发如下逻辑-

boolean found = false;
while(rs.next()){
   getStudValid = rs.getString("ID_No");
   getValidStatus = rs.getString("Validation");
   if(getStudValid.equals(ID_No)){
        if(getValidStatus.equals("Accepted"))
            System.out.println("Student " + getStudValid + " You are Enrolled!");
        else
            System.out.println("Student " + getStudValid + " Please complete the required pre-requisite processes.");
        found =true;
   }
}
if(!found)
   System.out.println("Student "+ID_No+" Not found");
但我建议您通过优化查询来优化此代码-
SELECT*FROM validation where ID\u No=?
,并使用
PrepareStatement

String validStatus = "SELECT * FROM validation where ID_No=?";
pst = connection.prepareStatement(validStatus);
pst.setString(1,Id_No);
rs = pst..executeQuery();

if(rs.next()){
    if(getValidStatus.equals("Accepted"))
          System.out.println("Student " + getStudValid + " You are Enrolled!");
    else
          System.out.println("Student " + getStudValid + " Please complete the required pre-requisite processes.");
}else
    System.out.println("Student "+ID_No+" Not found");
一些相关话题-


因此,本质上,当rs.next保持不变时,这意味着在执行查询时会找到某种类型的值

next返回一个布尔值,使用该布尔值可以执行如下操作

boolean isFound = rs.next();

if(isFound)
{
   //  your while loop
   //  at the end of your while loop add isFound = rs.next()
}
else
{
   return "Not Found";
}

这取决于当找不到学生时你希望发生什么。这里有两种方法

抛出异常(如果学生不存在则为错误)

或者您可以返回一个值

int exists = checkStatus("studentA");
if(exists == 0)
        System.out.println("Student wasnt found");

public static int checkStatus(String ID_No) throws SQLException{
    try{
        ResultSet rs;
        String validStatus = "SELECT * FROM validation";
        st = connection.createStatement();
        rs = st.executeQuery(validStatus);

            while(rs.next()){
                getStudValid = rs.getString("ID_No");
                getValidStatus = rs.getString("Validation");
                    if (!getValidStatus.equals("Accepted") && getStudValid.equals(ID_No)){
                        System.out.println("Student " + getStudValid + " Please complete the required pre-requisite processes.");
                        return 1; // found
                    } else if (getValidStatus.equals("Accepted") && getStudValid.equals(ID_No)){
                        System.out.println("Student " + getStudValid + " You are Enrolled!");
                        return 1; // found
                    } 
            } 

        return 0; // no student found
        rs.close();
    } catch(SQLException e){
        System.out.println("Updated "+ ID_No);
        return -1; // error occured
    }
}

我不明白这个问题。很抱歉,我被这个问题弄糊涂了。我试着插入一些代码,结果是这样的:输入学生编号:201200002学生未找到学生201200002您已注册!学生未找到学生未找到学生未找到“catch(SQLException e){System.out.println(“Updated”+ID_No);}”这很奇怪。它被捕获意味着不更新DONE@Srinath我在主代码中做了一些调整,所以没有问题。我只对If-Else语句有问题:>但是感谢caringI回滚了您的编辑,修复了您的代码。在你的问题中加入解决方案无助于人们看待这个问题。如果一个答案解决了你的问题,那么要么接受这个答案,要么发布你自己的答案作为答案。在这种情况下,由于您在编辑中使用了Subhrajyoti Majumder,您应该接受他的答案。我对If-Else条件有问题。谢谢您的回答!:>我真的很喜欢它。顺便说一句,我试图在不改变MySQL数据库的情况下通过java操作它。@JustAnotherLeech where子句,prepared stm不需要在sql结构中进行任何更改,使用
executeQuery(String)
PreparedStatement
抛出一个
SQLException
,您应该使用
executeQuery()
int exists = checkStatus("studentA");
if(exists == 0)
        System.out.println("Student wasnt found");

public static int checkStatus(String ID_No) throws SQLException{
    try{
        ResultSet rs;
        String validStatus = "SELECT * FROM validation";
        st = connection.createStatement();
        rs = st.executeQuery(validStatus);

            while(rs.next()){
                getStudValid = rs.getString("ID_No");
                getValidStatus = rs.getString("Validation");
                    if (!getValidStatus.equals("Accepted") && getStudValid.equals(ID_No)){
                        System.out.println("Student " + getStudValid + " Please complete the required pre-requisite processes.");
                        return 1; // found
                    } else if (getValidStatus.equals("Accepted") && getStudValid.equals(ID_No)){
                        System.out.println("Student " + getStudValid + " You are Enrolled!");
                        return 1; // found
                    } 
            } 

        return 0; // no student found
        rs.close();
    } catch(SQLException e){
        System.out.println("Updated "+ ID_No);
        return -1; // error occured
    }
}