Как использовать динамическое имя таблицы в запросе SELECT с использованием JDBC

java mysql select dynamic tablename

9809 просмотра

1 ответ

У меня есть 5 или таблица таблицы для запроса из \

мой синтаксис мне нравится это

String sql2 = "SELECT * FROM ? WHERE Patient_ID = ?";

pst = conn.prepareStatement(sql2);

        System.out.println("SQL before values are set "+sql2);
        System.out.println("The values of table/test name recieved in TestPrint stage 1 "+tblName);
        System.out.println("The values of test name recieved in TestPrint stage 1 "+key);
        // values are outputted correctly but are not getting set in the query

        pst.setString(1, tblName);
        pst.setLong(2, key);
ResultSet rs2 = pst.executeQuery(sql2);

        while(rs2.next()){

            String ID = rs2.getString("ID");

            jLabel35.setText(ID);
            jLabel37.setText(ID);
            jLabel38.setText(ID);
       // them print command is initiated to print the panel
}

Проблема в том, что когда я запускаю это, я получаю сообщение об ошибке "..... у вас есть ошибка в синтаксисе SQL рядом? WHERE Patient_ID =?"

Когда я вывожу sql используя system.out.println (sql2);

значения не установлены в sql2

Автор: Nawaz Источник Размещён: 12.11.2019 09:54

Ответы (1)


6 плюса

Решение

Когда вы готовите оператор, база данных создает план выполнения, который она не может выполнить, если таблицы там нет. Другими словами, заполнители могут использоваться только для значений , а не для имен объектов или зарезервированных слов. Вы должны полагаться на Java для создания вашей строки в таком случае:

String sql = "SELECT * FROM `" + tblName + "` WHERE Patient_ID = ?";

pst = conn.prepareStatement(sql);
pst.setLong(1, key);
ResultSet rs = pst.executeQuery(sql);
Автор: Mureinik Размещён: 09.02.2014 09:01
Вопросы из категории :
32x32