SQL-запрос работает в PHPMyAdmin, но не в Java (JDBC) - PullRequest
0 голосов
/ 16 ноября 2018

Я сгенерировал следующую строку в java:

select * from `levelone_sessions` where user_session_key='-LIi-AlyYC37HfRezq7W' union select * from `changelang_sessions` where user_session_key='-LIi-AlyYC37HfRezq7W' union select * from `leveltwo_sessions` where user_session_key='-LIi-AlyYC37HfRezq7W' union select * from `levelthree_sessions` where user_session_key='-LIi-AlyYC37HfRezq7W' union select * from `sequence_sessions` where user_session_key='-LIi-AlyYC37HfRezq7W' union select * from `search_sessions` where user_session_key='-LIi-AlyYC37HfRezq7W' union select * from `settings_sessions` where user_session_key='-LIi-AlyYC37HfRezq7W'

и затем преобразовал ее в оператор SQL, используя PreparedStatement.Теперь этот SQL-запрос прекрасно работает в PHPMyAdmin и успешно выдает следующие выходные данные:

Скриншот вывода PHPMyAdmin

Но когда тот же запрос выполняется изнутри Java-программыВыдает следующее исключение:

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'where user_session_key='-LIi-AlyYC37HfRezq7W'' at line 1

Не совсем уверен, почему это происходит.Справка!

РЕДАКТИРОВАТЬ:

Вот код Java, который фактически генерирует вышеупомянутую строку и выполняет ее как оператор SQL.

Collection<String> activities = Utilities.AppActivities.values();
int no_of_activities = activities.size(), i=0;
query = "";
for(String activity: activities) {
if(i < no_of_activities-1) {
    query += "select * from `" + activity + "` where user_session_key='" + session_key + "' union ";
}
else {
    query += "select * from `" + activity + "` where user_session_key='" + session_key + "'";
}
i++;
}
System.out.println(query);
stmt = con.prepareStatement(query);
rs = stmt.executeQuery();
duration = 0;
while(rs.next()) {
    duration += rs.getInt("duration");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...