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

java mysql select dynamic tablename

9809 просмотра

1 ответ

133 Репутация автора

У меня есть 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 Источник Размещён: 09.02.2014 08:55

Ответы (1)


6 плюса

200264 Репутация автора

Решение

Когда вы готовите оператор, база данных создает план выполнения, который она не может выполнить, если таблицы там нет. Другими словами, заполнители могут использоваться только для значений , а не для имен объектов или зарезервированных слов. Вы должны полагаться на 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