jdbc набор результатов с операторами if then

Моя цель: я пытаюсь сделать запрос в моей пожарной / спасательной базе данных, чтобы определить текущее состояние машин скорой помощи. Когда у меня есть текущее расположение, я генерирую масштабируемую векторную графику на основе этого расположения. Например, рабочая скорая помощь будет иметь красный прямоугольник вокруг информации. Доступная скорая помощь будет иметь белый прямоугольник с зеленой рамкой и т. Д. Проблема: я могу добраться до своей базы данных и распечатать набор результатов. Однако мое заявление IF THEN не работает должным образом. Все распечатанные данные соответствуют окончательному утверждению ELSE. Другими словами, хотя я проверяю расположение == "Работающий", программа не распознает его и сразу переходит к окончательному утверждению 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

Обратите внимание, что хотя M01 работает, во второй строке написано "не уверен", что будет выводом окончательного оператора ELSE. Почему мой оператор If-THEN неправильно обрабатывает ResultSet?

2 ответа

Решение

Вы должны использовать метод equals() для сравнения строк. Вы не можете использовать оператор сравнения == для сравнения строк.

Например:

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

Также см equalsIgnoreCase() метод здесь

Большое спасибо Набину за ответ на этот вопрос. Окончательный код будет выглядеть так:

 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");
            }

        }
Другие вопросы по тегам