2015-02-21 1 views
0

В JDBC я хочу выполнить запрос MySQL и сохранить его результат как отношение к его использованию в следующем запросе, для что я делаю что-то вроде этого:как сохранить результат запроса jdbc как отношение использовать его в следующем запросе

public static void getaData() throws Exception { 

     Class.forName("com.mysql.jdbc.Driver"); 
     Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/myDatabase","xyz","[email protected]"); 
     PreparedStatement statement1 = connection.prepareStatement("select * from table1 join table2 using(table2_id)"); 
     ResultSet result1 = statement1.executeQuery(); 

     PreparedStatement statement2 = connection.prepareStatement("select concat(first_name,' ',last_name) as full_name, party_name, head, symbol from ("+result1+") as subTable");      
     ResultSet result2 = statement2.executeQuery(); 

     System.out.printf("%-30s%-30s%-30s%-30s\n\n", "full_name", "party_name", "head", "symbol"); 
     while(result2.next()) 
      System.out.printf("%-30s%-30s%-30s%-30s\n", result2.getString(0), result2.getString(1), result2.getString(2), result2.getString(3)); 

    } 

но это бросает исключение, которое:

Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[email protected]) as subTable' at line 1 

Так что, пожалуйста, как я могу это сделать?

ответ

0

Ваш SQL-запрос неверен. вы не можете использовать скобки рядом с FROM, как вы это делали. Это должно быть,

from "+result1+" 

или

from ("+result+" as subtable) 

выше изменения будут решить вашу проблему.

+0

все еще не работает –

+0

По-прежнему такая же ошибка? –

+0

Обнаружили ошибку. Вы должны указать имя таблицы как строку, а не object.result1 не является строкой –

0

Вам не нужна инструкция 1 или результат1.

String subTable = "select * from table1 join table2 using(table2_id)"; 
PreparedStatement statement2 = connection.prepareStatement("select concat(first_name,' ',last_name) as full_name, party_name, head, symbol from ("+subTable+") as subTable"); 
Смежные вопросы