Колум SQL не найден в базе данных? - PullRequest
0 голосов
/ 25 июня 2018

Сегодня я столкнулся с очень странной ошибкой.

Моя ошибка:

Столбец «Наам» не найден.

Вот мой запрос:

 ResultSet rs1 = con.createStatement().executeQuery("SELECT titel from leningen where naam='" + username + "'");

Здесь вы можете увидеть, что в базе данных есть таблица: image

Почему это говорит мне, что "Наам" не найден? В моем табличном представлении должно отображаться «привет», но из-за этого я получаю

java.lang.NullPointerException

Вот мой полный код в знак почтения:

public void showboeken() throws IOException, SQLException {
    FXMLLoader fxmlLoader = new FXMLLoader();
    fxmlLoader.setLocation(getClass().getResource("showboeken.fxml"));
    Scene scene = new Scene(fxmlLoader.load(), 600, 400);
    Stage stage = new Stage();
    stage.setTitle("New Window");
    stage.setScene(scene);
    stage.show();
    FileReader fr = new FileReader("C:\\Users\\thomasmoed\\IdeaProjects\\bibliotheek\\save.txt");
    BufferedReader br = new BufferedReader(fr);
    String username = br.readLine();
    System.out.println(username);

    try {
        System.out.println("Loading");
        columBoek.setCellValueFactory(new PropertyValueFactory<>("naam"));
    } catch (Exception lol) {
        System.out.println(lol);
    }

    try {
        Class.forName("com.mysql.cj.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost/bibliotheek?user=root");
        Connection con = conn;

        ResultSet rs1 = con.createStatement().executeQuery("SELECT titel from leningen where naam='" + username + "'");

        ObservableList<UserModel> data = FXCollections.observableArrayList();

        while (rs1.next()) {
            UserModel usr = new UserModel();
            usr.setNaam(rs1.getString("naam"));
            data.add(usr);
        }

        tableBoekenlening.setItems(data);
        UserModel item = tableBoekenlening.getSelectionModel().getSelectedItem();
        System.out.println(item.getNaam());
    }
    catch (SQLException sqlf) {
        System.out.println(sqlf.getMessage());
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }


}

1 Ответ

0 голосов
/ 25 июня 2018

Чтобы иметь возможность запустить rs1.getString("naam"), вам нужно включить naam среди выбранных вами столбцов.В настоящее время вы просто выбираете titel.Таким образом, ваш оператор SQL, вероятно, должен быть

"SELECT naam, titel FROM leningen WHERE naam='" + username + "'"

Также имейте в виду, что построение оператора SQL путем конкатенации, как это, оставляет вас открытыми для атак SQL-инъекций.Я настоятельно рекомендую научиться использовать подготовленные утверждения вместо использования этого подхода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...