Ошибка в java, oracle, невозможно найти идентификатор, ошибка ResultSet - PullRequest
0 голосов
/ 13 апреля 2020

Я делаю приложение Java, которое получает идентификатор в форме javaFX и возвращает его данные в текстовом поле, используя базу данных oracle. Но когда я запускаю приложение, база данных получает соединения и драйвер загружается, но детали не отображаются. Я подозреваю, что это как-то связано с классом ResultSet.

package assignment;

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.geometry.*;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import java.sql.*;

public class bobby extends Application {

    private Statement statement;
    private TextField textfieldId = new TextField();
    private TextField textfieldLnane = new TextField();
    private TextField textfieldFnane = new TextField();
    private TextField textfieldMi = new TextField();
    private TextField textfieldAddress = new TextField();
    private TextField textfieldCity = new TextField();
    private TextField textfieldState = new TextField();
    private TextField textfieldTelephone = new TextField();
    private Label lblDispplay = new Label();

    @Override
    public void start(Stage primaryStage) {
        // Initialize database connection and create a Statement object
        initializeDB();

        //Creating Buttons
        Button btnView = new Button("View");
        Button btnClear = new Button("Clear");

        //Creating HBoxes
        HBox hBox1 = new HBox(1);
        hBox1.getChildren().addAll(new Label("Database Connected"));
        HBox hBox2 = new HBox(2);
        hBox2.getChildren().addAll(new Label("ID"), textfieldId, lblDispplay);
        HBox hBox3 = new HBox(6);
        hBox3.getChildren().addAll(new Label("Last Name"), textfieldLnane, new Label("First Name"), textfieldFnane,
                new Label("MI"), textfieldMi);
        HBox hBox4 = new HBox(2);
        hBox4.getChildren().addAll(new Label("Address"), textfieldAddress);
        HBox hBox5 = new HBox(4);
        hBox5.getChildren().addAll(new Label("City"), textfieldCity, new Label("State"), textfieldState);
        HBox hBox6 = new HBox(4);
        hBox6.getChildren().addAll(new Label("Telephone"), textfieldTelephone);
        HBox hBox7 = new HBox(4);
        hBox7.getChildren().addAll(btnView, btnClear);

        //Creating TextFields
        textfieldId.setPrefColumnCount(10);
        textfieldLnane.setPrefColumnCount(12);
        textfieldFnane.setPrefColumnCount(13);
        textfieldMi.setPrefColumnCount(3);
        textfieldAddress.setPrefColumnCount(15);
        textfieldCity.setPrefColumnCount(16);
        textfieldState.setPrefColumnCount(15);
        textfieldTelephone.setPrefColumnCount(13);

        //Setting Alignment for HBoxes
        hBox1.setAlignment(Pos.BASELINE_LEFT);
        hBox2.setAlignment(Pos.BASELINE_LEFT);
        hBox3.setAlignment(Pos.BASELINE_LEFT);
        hBox4.setAlignment(Pos.BASELINE_LEFT);
        hBox5.setAlignment(Pos.BASELINE_LEFT);
        hBox6.setAlignment(Pos.BASELINE_LEFT);
        hBox7.setAlignment(Pos.BASELINE_CENTER);

        //Creating VBox
        VBox vBox = new VBox(10);
        vBox.setPadding(new Insets(5));
        //Inserting HBoxes inside the VBox
        vBox.getChildren().addAll(hBox1, hBox2, hBox3, hBox4, hBox5, hBox6, hBox7);
        btnView.setOnAction(e -> output());
        btnClear.setOnAction(e -> getClearTextBoxes());

        // Create a scene and place it in the stage
        Scene scene = new Scene(vBox, 650, 280);
        primaryStage.setTitle("FindResult"); // Set the stage title
        primaryStage.setScene(scene); // Place the scene in the stage
        primaryStage.show(); // Display the stage
    }

    private void initializeDB() {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
             System.out.println("Oracle Driver loaded");

            // Establish a connection
            Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@calvin.humber.ca:1521/grok ",
                    UserPass.USERNAME, UserPass.PASSWORD);
            System.out.println("Oracle Database connected");

            // Create a statement
            statement = connection.createStatement();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private void output() {
        //String id = textfieldId.getText();
        int id = Integer.parseInt(textfieldId.getText());
        try {
            String queryString = "select LAST_NAME,FIRST_NAME,MI,ADDRESS,CITY,STATE,TELEPHONE from STAFF where STAFF.ID = '"
                    + id + "'";

            ResultSet resultSet = statement.executeQuery(queryString);
            System.out.println(resultSet + " " + id);
            if (resultSet.next()) {
                String lastName = resultSet.getString(1);
                String firstName = resultSet.getString(2);
                String mi = resultSet.getString(3);
                String address = resultSet.getString(4);
                String city = resultSet.getString(5);
                String state = resultSet.getString(6);
                String telephone = resultSet.getString(7);

                textfieldLnane.setText(lastName);
                textfieldFnane.setText(firstName);
                textfieldMi.setText(mi);
                textfieldAddress.setText(address);
                textfieldCity.setText(city);
                textfieldState.setText(state);
                textfieldTelephone.setText(telephone);

            } else {
                textfieldId.setText("ID not found");
                textfieldLnane.clear();
                textfieldFnane.clear();
                textfieldMi.clear();
                textfieldAddress.clear();
                textfieldCity.clear();
                textfieldState.clear();
                textfieldTelephone.clear();
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }

    public void getClearTextBoxes() {
        textfieldId.clear();
        textfieldLnane.clear();
        textfieldFnane.clear();
        textfieldMi.clear();
        textfieldAddress.clear();
        textfieldCity.clear();
        textfieldState.clear();
        textfieldTelephone.clear();
        lblDispplay.setText(null);
    }

    /**
     * The main method is only needed for the IDE with limited JavaFX support. Not
     * needed for running from the command line.
     */
    public static void main(String[] args) {
        launch(args);
    }

}//End of public class Assignment4

 class UserPass {
    static final String USERNAME = "N01350373";
    static final String PASSWORD = "oracle";
}

Это входит в оператор else и дает мне идентификатор ошибки не найден. Я создал таблицу с данными, вероятно, но не могу выяснить проблему.

введите описание изображения здесь

Изображение SQl таблицы

...