Я пытаюсь получить destination(zielort) для artikelID, который я получу из своего графического интерфейса. К сожалению, я всегда получаю сообщение об ошибке

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Неизвестный идентификатор столбца в предложении «где»

В моей базе данных есть ArtikelID с ID=1234. В своем тестовом классе я пытаюсь получить destination(zielort) моего ArtikelID 1234. В результате я должен получить E1.R10.D2,, но получаю сообщение об ошибке.

Надеюсь, вы поможете мне найти мою ошибку.

**Test Class:**
public static void main(String[] args) {
        // TODO Auto-generated method stub
        //DBConnect connect = new DBConnect();
        //String s = connect.getLoginDaten(1);
        //System.out.print(s);


    DBConnect connect = new DBConnect();
    String s= connect.getZielort(1234);
    System.out.print(s);
}


**DB-Connect Class:**
public String getZielort(int arikel_ID) {
        String zielort="";
        try {
            String query = "select zielort from warenliste where id="+arikel_ID;
            rs= st.executeQuery(query);
            while (rs.next()) {
                zielort = rs.getString("zielort");  
            }

        }
        catch(Exception e) {
            System.out.println(e);
        }
        return zielort;
    }

    public int getArtikel(int arikel_ID) {
        int artikelid=0;
        try {
            String query = "select Artikel_ID from warenliste where id="+arikel_ID;
            rs= st.executeQuery(query);
            while (rs.next()) {
                artikelid = rs.getInt("Artikel_ID");    
            }

        }
        catch(Exception e) {
            System.out.println(e);
        }
        return artikelid;
    }
0
Funkeyfreak 26 Окт 2019 в 15:19

1 ответ

Исключение означает, что в вашей таблице нет столбца с именем id. Из вашего запроса

"select Artikel_ID from warenliste where id="+arikel_ID;

Я предполагаю, что столбец называется Artikel_ID, поэтому ваш запрос должен выглядеть так:

"select Artikel_ID from warenliste where Artikel_ID="+arikel_ID;

Конечно, у вас может быть другая схема. Загляните в свою базу данных, чтобы узнать, как названы столбцы таблицы warenliste, а затем замените Artikel_ID фактическим именем столбца.

Кстати, если вы работаете с пользовательским вводом, взгляните на PreparedStatement по соображениям безопасности (например, SQL-инъекция).

1
Alex R 26 Окт 2019 в 15:38
По соображениям безопасности вам даже не следует использовать имя пользователя и пароль MySQL, жестко закодированные в Java, которые можно очень легко декомпилировать. ...
 – 
Raymond Nijland
26 Окт 2019 в 15:43