Использование результата запроса в качестве условия для установки фона jtextField в java свинг с Mysql - PullRequest
0 голосов
/ 21 июня 2020

Может ли кто-нибудь помочь мне установить цвет фона для jtextfield, используя результат оператора запроса Мой код скомпилирован, но у меня пока нет результата

public void mouseClicked( MouseEvent arg0 )
    {
        DefaultTableModel model = (DefaultTableModel) table_Vols_Disponibles.getModel();
        // get the selected row index
        int selectedRowIndex = table_Vols_Disponibles.getSelectedRow();

        // set the selected row data into jtextfields
        txt_ID_Vol.setText( model.getValueAt( selectedRowIndex, 0 ).toString() );
        txt_ID_Avion.setText( model.getValueAt( selectedRowIndex, 1 ).toString() );
        txt_Heure_Depart.setText( model.getValueAt( selectedRowIndex, 2 ).toString() );
        txt_Heure_Arrivee.setText( model.getValueAt( selectedRowIndex, 3 ).toString() );
        txt_Duree.setText( model.getValueAt( selectedRowIndex, 4 ).toString() );
        txt_Ville_Depart.setText( model.getValueAt( selectedRowIndex, 5 ).toString() );
        txt_Ville_Arrivee.setText( model.getValueAt( selectedRowIndex, 6 ).toString() );

        // int row =table_Vols_Disponibles.getSelectedRow();
        //  String cell=table_Vols_Disponibles.getModel().getValueAt(row, 0).toString();
        try
        {
            Class.forName( "com.mysql.jdbc.Driver" );
            Connection connection = DriverManager.getConnection( "jdbc:mysql://localhost:3306/billet_avion", "root", "" );
            String sql = "Select siege from sieges where id_vo='" + txt_ID_Vol + "' ";
            PreparedStatement preparedStatement = connection.prepareStatement( sql );
            ResultSet resultSet = preparedStatement.executeQuery( sql );

            String siege1 = txtTest.getText();
            String NBsiege = resultSet.getString( "siege" );
            if( NBsiege == siege1 )
            {
                txtTest.setBackground( Color.green );
            }
        }
        catch( ClassNotFoundException e )
        {
            e.printStackTrace();
        }
        catch( SQLException throwables )
        {
            throwables.printStackTrace();
        }
    }

1 Ответ

0 голосов
/ 21 июня 2020

Когда вы сравниваете строки, вам нужно сравнивать содержимое, но не адреса их памяти. Поскольку == является оператором, он сравнивает адреса памяти, а не содержимое

Замените

           if( NBsiege == siege1 )
            {
                txtTest.setBackground( Color.green );
            }

на

        if( siege1.equals(NBsiege) )
        {
            txtTest.setBackground( Color.green );
        }

Предложение.

  1. Создание такого соединения с базой данных в методах не является хорошей практикой. Вы можете использовать отдельный класс, чтобы сделать это за вас. Обратите внимание, что создание подключения к базе данных - дорогостоящая задача. Поэтому вам следует повторно использовать созданное соединение, используя пул соединений или аналогичный механизм
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...