Column 'Rock' not found

534
05 февраля 2017, 12:00

При попытке запустить метод возникает ошибка:

java.sql.SQLException: Column 'Rock' not found.
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
    at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1093)
    at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5488)
    at DAO.MusicTypeDAO.getAll(MusicTypeDAO.java:108)
    at DAO.Main.main(Main.java:18)

Код метода:

public List<MusicType> getAll() {
        String requestMysql = "SELECT * FROM music_type;";
        List<MusicType> musicTypes = new ArrayList();
        PreparedStatement ps;
        try {
            ConnectionUtils.getConnection().setAutoCommit(false);
            ps = ConnectionUtils.getConnection().prepareStatement(requestMysql);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                MusicType musicType = new MusicType(rs.getInt("id"), rs.getString(rs.getString("type_name")));
                musicTypes.add(musicType);
            }
            ConnectionUtils.getConnection().commit();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return musicTypes;
    }

ДБ:

CREATE database  if not exists `users_and_music` ;
USE users_and_music;
CREATE TABLE address (
    id INT PRIMARY KEY AUTO_INCREMENT,
    country VARCHAR(256),
    street VARCHAR(256),
    zip INT
);
CREATE TABLE role (
     id  INT PRIMARY KEY AUTO_INCREMENT,
    role_name VARCHAR(256)
);
CREATE TABLE music_type (
    id INT PRIMARY KEY AUTO_INCREMENT,
    type_name VARCHAR(256)
);
CREATE TABLE user (
    id INT NOT NULL AUTO_INCREMENT,
    role_id  INT NOT NULL,
    firstName VARCHAR(15) DEFAULT NULL,
    lastName VARCHAR(15) DEFAULT NULL,
    login VARCHAR(15) DEFAULT NULL,
    userpassword VARCHAR(20) DEFAULT NULL,
    age SMALLINT(3) DEFAULT NULL,
       PRIMARY KEY (`id`),
    FOREIGN KEY (role_id)
        REFERENCES role (id)
);
CREATE TABLE user_music_type (
    user_id  INT  NOT NULL,
    music_type_id INT NOT NULL,
    PRIMARY KEY(user_id,music_type_id ),
    FOREIGN KEY (user_id) 
        REFERENCES user (id),
    FOREIGN KEY (music_type_id)
        REFERENCES music_type (id)
);
Answer 1

Судя по стек-трейсу, исключение генерируется в этой строке:

MusicType musicType = new MusicType(rs.getInt("id"), rs.getString(rs.getString("type_name")));

А именно из-за этого:

rs.getString(rs.getString("type_name"))

Здесь Вы получаете значение поля type_name, а затем пытаетесь получить значение поля с именем, которое вернуло rs.getString("type_name"), которого, очевидно, не существует.

В общем, попробуйте заменить эту строчку на вот эту:

MusicType musicType = new MusicType(rs.getInt("id"), rs.getString("type_name"));
READ ALSO
Ошибка java: Cannot find symbol

Ошибка java: Cannot find symbol

Читаю книгу1 "Технологии java2",выполняю задания по текстовым компонентам swing и отображением HTMLВообщем при компиляции программы в intellij idea

572
Параллельное выполнение первого потока вместе с другими

Параллельное выполнение первого потока вместе с другими

Нужно вернуть json в котором находятся ссылки 5000+ файловCоздаю модель

401