Java 带有if-then语句的jdbc结果集

Java 带有if-then语句的jdbc结果集,java,if-statement,jdbc,resultset,Java,If Statement,Jdbc,Resultset,我的目标:我试图查询我的消防/救援数据库,以确定救护车的当前状态。一旦我有了这个当前的配置,我会根据这个配置生成一个可伸缩的矢量图形。例如,一辆正在工作的救护车的信息周围会有一个红色的矩形。可用的救护车将有一个带绿色边框的白色矩形,等等。 问题是:我能够进入我的数据库并打印出结果集。然而,我的IF-THEN语句不能正常工作。所有打印输出符合最终ELSE声明。换句话说,尽管我正在检查一个配置==“Working”,但程序无法识别它,并直接跳到最后一个ELSE语句。下面显示的是我的代码,它已被简化为

我的目标:我试图查询我的消防/救援数据库,以确定救护车的当前状态。一旦我有了这个当前的配置,我会根据这个配置生成一个可伸缩的矢量图形。例如,一辆正在工作的救护车的信息周围会有一个红色的矩形。可用的救护车将有一个带绿色边框的白色矩形,等等。 问题是:我能够进入我的数据库并打印出结果集。然而,我的IF-THEN语句不能正常工作。所有打印输出符合最终ELSE声明。换句话说,尽管我正在检查一个配置==“Working”,但程序无法识别它,并直接跳到最后一个ELSE语句。下面显示的是我的代码,它已被简化为删除SVG并只打印出一行文本

package javaDatabase;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class CurrentDisposition3
{

    public static void main(String[] args) throws SQLException,
            ClassNotFoundException
    {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

        Connection conn = DriverManager
                .getConnection("jdbc:sqlserver://999.99.99.99;database=myDatabase;integratedsecurity=false;user=myUser;password=myPassword");

        Statement sta = conn.createStatement();
        String qryCurrentDisposition = "SELECT Ambulance, FinalTimeStamp, UnitStatus, Disposition FROM EMSDatabase";
        ResultSet rs = sta.executeQuery(qryCurrentDisposition);

        while (rs.next())
        {
            String truck = rs.getString("Ambulance");
            String timeStamp = rs.getString("FinalTimeStamp");
            String unitStatus = rs.getString("UnitStatus");
            String disposition = rs.getString("Disposition");
            System.out.println(truck + ", " + timeStamp + ", " + unitStatus
                    + ", " + disposition);
            if (disposition == "Working")
            {
                System.out.println("This truck is working");
            } else if (disposition == "Free")
            {
                System.out.println("This truck is free");
            } else if (disposition == "OutofService")
            {
                System.out.println("Out of Service temporarily");
            } else if (disposition == "Standby")
            {
                System.out.println("Standing by");
            } else
            {
                System.out.println("not sure");
            }

        }
    }
}
我在控制台中的输出如下所示:

M01, 09:00:17, USTA, Working

not sure

M02, 08:52:21, USLC, Standby

not sure

M03, 08:54:27, USTA, Working

not sure

M04, 08:59:59, USAR, Working

not sure

M05, 08:02:18, USLC, Standby

not sure
 while (rs.next())
        {
            String truck = rs.getString("Ambulance");
            String timeStamp = rs.getString("FinalTimeStamp");
            String unitStatus = rs.getString("UnitStatus");
            String disposition = rs.getString("Disposition");
            System.out.println(truck + ", " + timeStamp + ", " + unitStatus
                    + ", " + disposition);
            if (disposition.equals("Working"))
            {
                System.out.println("This truck is working");
            } else if (disposition.equals("Free"))
            {
                System.out.println("This truck is free");
            } else if (disposition.equals("OutofService"))
            {
                System.out.println("Out of Service temporarily");
            } else if (disposition.equals("Standby"))
            {
                System.out.println("Standing by");
            } else
            {
                System.out.println("not sure");
            }

        }
请注意,尽管M01正在工作,但第二行表示“不确定”,这将是最终ELSE语句的输出。
为什么我的If THEN语句不能正确处理结果集?

您应该使用equals()方法来比较字符串。不能使用比较运算符来比较字符串

例如:

if(yourString.equals("sometext")//correct way
if(yourString == "sometext")//incorrect way

另请参见
equalsIgnoreCase()
method

您应该使用equals()方法来比较字符串。不能使用比较运算符来比较字符串

例如:

if(yourString.equals("sometext")//correct way
if(yourString == "sometext")//incorrect way

另请参见
equalsIgnoreCase()
method

非常感谢Nabin回答这个问题。 最终的代码如下所示:

M01, 09:00:17, USTA, Working

not sure

M02, 08:52:21, USLC, Standby

not sure

M03, 08:54:27, USTA, Working

not sure

M04, 08:59:59, USAR, Working

not sure

M05, 08:02:18, USLC, Standby

not sure
 while (rs.next())
        {
            String truck = rs.getString("Ambulance");
            String timeStamp = rs.getString("FinalTimeStamp");
            String unitStatus = rs.getString("UnitStatus");
            String disposition = rs.getString("Disposition");
            System.out.println(truck + ", " + timeStamp + ", " + unitStatus
                    + ", " + disposition);
            if (disposition.equals("Working"))
            {
                System.out.println("This truck is working");
            } else if (disposition.equals("Free"))
            {
                System.out.println("This truck is free");
            } else if (disposition.equals("OutofService"))
            {
                System.out.println("Out of Service temporarily");
            } else if (disposition.equals("Standby"))
            {
                System.out.println("Standing by");
            } else
            {
                System.out.println("not sure");
            }

        }

非常感谢纳宾回答这个问题。 最终的代码如下所示:

M01, 09:00:17, USTA, Working

not sure

M02, 08:52:21, USLC, Standby

not sure

M03, 08:54:27, USTA, Working

not sure

M04, 08:59:59, USAR, Working

not sure

M05, 08:02:18, USLC, Standby

not sure
 while (rs.next())
        {
            String truck = rs.getString("Ambulance");
            String timeStamp = rs.getString("FinalTimeStamp");
            String unitStatus = rs.getString("UnitStatus");
            String disposition = rs.getString("Disposition");
            System.out.println(truck + ", " + timeStamp + ", " + unitStatus
                    + ", " + disposition);
            if (disposition.equals("Working"))
            {
                System.out.println("This truck is working");
            } else if (disposition.equals("Free"))
            {
                System.out.println("This truck is free");
            } else if (disposition.equals("OutofService"))
            {
                System.out.println("Out of Service temporarily");
            } else if (disposition.equals("Standby"))
            {
                System.out.println("Standing by");
            } else
            {
                System.out.println("not sure");
            }

        }

非常感谢纳宾。非常感谢纳宾。