Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / вопрос по JDBC / 8 сообщений из 8, страница 1 из 1
22.08.2006, 15:12
    #33935021
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по JDBC
Подскажите плиз как правильно делать такую обычную вещь.
Надо выбрать данные из таблицы например Users и таблицы Jobs,
которые соединены между собой many-to-many через таблицу
User_Job.
Ну вот делаю запрос
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
  String query = "SELECT user_id, user_name FROM Users;";
  Connection con = getConnection(url, login, password);
  Statement  st = con.createStatement();
  ResultSet rs = st.executeQuery(query);
   while  (rs.next())
  {
     int  user_id = rs.getInt( 1 );
    String name = rs.getString( 2 );
    //И тут мне надо выбрать по user_id все записи из таблицы User_Job и Jobs!
    //То есть так примерно?
    List jobs = getJobsByUserId(Connection con, int  userId);
     // можно передавать List jobs = getJobsByUserId(Statement  st ,int userId);
    
  }
    rs.close();st.close();  con.close()
//И сам метод 
   private  List getJobsByUserId(Connection con, int  userId)
  { 
      PreparedStatement prepSt= con.prepareStatement(
    "SELECT j.job_name FROM Jobs j, User_Job  uj 
                      WHERE uj.job_id = j.job_id AND   uj.user_id = ?";
      prepSt.setInt( 1 ,userId);
      ResultSet rs = prepSt.executeQuery();
       while (rs.next())
     { 
        create List from ResultSet
     }
      return  created List
   }
Получается очень громоздко!
Может есть более элегантный способ именно при помощи чистого JDBC?
...
Рейтинг: 0 / 0
22.08.2006, 15:15
    #33935041
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по JDBC
В Oracle можно сделать запрос с inline-курсором.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
22.08.2006, 15:16
    #33935046
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по JDBC
авторList jobs = getJobsByUserId(Connection con,int userId);
// можно передавать List jobs = getJobsByUserId(Statement st ,int userId)?
Это не утвеождение а вопрос.
...
Рейтинг: 0 / 0
22.08.2006, 15:17
    #33935049
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по JDBC
Ясно.
К сожалению у клиента MySQL :(
...
Рейтинг: 0 / 0
22.08.2006, 15:31
    #33935113
chernolyas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по JDBC
почитай книжку про SQL. Есть в стандартной спецификации SQL такая вещь как объединения.
...
Рейтинг: 0 / 0
22.08.2006, 15:35
    #33935129
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по JDBC
Ну а как потом выбрать эти данные из ResultSet
Код: plaintext
1.
2.
3.
4.
5.
6.
  while (resultSet.next()
  {
       int  id = resultSet.getInt( 1 );
      String userName = resultSet.getString( 2 );
      String  jobName = resultSet.getString( 3 );
  }

И получиться что из базы приходит десять кортежей типа
1- Иванов - Программист
1 - Иванов - Администратор
1- Иванов - Культурист
А мне в прнципе это надо чтоб прочитать 1- Иванов, сделать User user = new User(1, "Иванов"):
потом по 1 прочитать и сделать List listOfJobs.add("Программист","Администратор","Культурист");
и наконец user.setJobs(listOfJobs).
...
Рейтинг: 0 / 0
22.08.2006, 15:35
    #33935135
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по JDBC
Это в случае запроса
select u.user_id, u.user_name, j.job_name from users u
left join user_jobs uj on uj.user_id = u.user_id
left join jobs j on j.job_id = uj.job_id
...
Рейтинг: 0 / 0
22.08.2006, 16:05
    #33935271
ПсоП
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по JDBC
А что нужно сделать?
Может это устроит?

SELECT uj.user_id, j.job_name

FROM User_Job uj, Jobs j

where uj.job_id = j.job_id

order by uj.user_id
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / вопрос по JDBC / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]