Гость
Форумы / Java [игнор отключен] [закрыт для гостей] / Не могу подключиться к виду в PostgreSQL / 8 сообщений из 8, страница 1 из 1
24.03.2010, 09:50
    #36538644
vadim_bv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу подключиться к виду в PostgreSQL
Добрый день!
Скажу сразу, я в Java полный ламер. Но мне достался проект от уволившегося программиста, Он худо-бедно работает, но надо его расширять.

Подключаюсь к БД в PostgreSQL, выполняю запрос типа
Код: plaintext
Select * from <имя схемы>.<имя вида1>
.
Работает.
Но... результат выполнения запроса из другого вида
Код: plaintext
Select * from <имя схемы>.<имя вида2>
всегда пуст (хотя, когда смотрю через pgAdmin, вижу, что там есть записи), словно я обращаюсь к несуществующему виду.
Что делать? Смотреть свойства видов? - вроде одинаковые.
...
Рейтинг: 0 / 0
24.03.2010, 22:28
    #36540985
megaton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу подключиться к виду в PostgreSQL
Может просто прав нет у пользователя который делает коннект из приложения? Попробуйте зайти через pgAdmin под тем же пользователем.
...
Рейтинг: 0 / 0
24.03.2010, 23:15
    #36541058
dmitriyche
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу подключиться к виду в PostgreSQL
vadim_bv,

Покажите пожалуйста как Вы конектитесь к СУБД через Java?
...
Рейтинг: 0 / 0
25.03.2010, 11:41
    #36541704
vadim_bv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу подключиться к виду в PostgreSQL
megaton,

Свойства таблиц всюду одинаковые. Пользователь только один.

dmitriyche,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 public   class  DbConnector  implements  AppConnParams {
// в AppConnParams определны имя сервера, имя и пароль пользователя

	 public   static  Connection getConnection()  throws  SQLException {
		String url  = CONNECTION_URL;
		String user = CONNECTION_USER;
		String pass = CONNECTION_PASS;	
		 return  java.sql.DriverManager.getConnection(url, user, pass);	
	}
	
}

Дальше создаются классы, которые вытягивают информацию (я бы, скорее всего, сделал структуру классов попроще, но, повторюсь, делал проект не я):

Класс 1 (вернее, та процедура, которая подсоединяется к БД):
Код: 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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
 protected   void  processRetrievingQuery(String id_field,  long  id)  throws  SQLException {
		Connection conn = DbConnector.getConnection();
		String src = schemaName + "." + tableName;
		 int  typeFiltrationParamNum =  0 ; 
		 int  systemFiltrationParamNum =  0 ;
		//Для подсистемы и блока
		 int  subsystemFiltrationParamNum =  0 ;
		 int  blockFiltrationParamNum =  0 ;
		
		StringBuilder query =  new  StringBuilder();
		query.append("SELECT * FROM " + src + " WHERE " + id_field + "=? ");

// тут разная фильтрация по параметрам 
		 int  curFiltrationParamNum =  1 ;
		 if  (typeFiltration) {
			typeFiltrationParamNum = ++curFiltrationParamNum;
			query.append("AND type_id=? ");
		}
		 if  (systemFiltration) {
			systemFiltrationParamNum = ++curFiltrationParamNum;
			query.append("AND system_id=? ");
		}
		//Для подсистемы и блока
		 if  (subsystemFiltration)
		{
			subsystemFiltrationParamNum = ++curFiltrationParamNum;
			query.append("AND subsystem_id=? ");
		}
		 if  (blockFiltration)
		{
			blockFiltrationParamNum = ++curFiltrationParamNum;
			query.append("AND block_id=? ");
		}
		
		PreparedStatement ps = conn.prepareStatement(query.toString());
		ps.setLong( 1 , id);
		 if  (typeFiltration) {
			ps.setLong(typeFiltrationParamNum, typeId);
		}
		 if  (systemFiltration) {
			ps.setLong(systemFiltrationParamNum, systemId);
		}
		//Для подсистемы и блока
		 if  (subsystemFiltration)
		{
			ps.setLong(subsystemFiltrationParamNum, subsystemId);
		}
		 if  (blockFiltration)
		{
			ps.setLong(blockFiltrationParamNum, blockId);
		}
// queryString - отладочная переменная, выдает строку запроса
		queryString = ps.toString();
		ResultSet rs = ps.executeQuery();
		setEquipmentList(rs);		
		conn.close();
}

Класс 2, который выводит всё на web-страницу:
Код: 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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
 public   void  processHttpParams(Retriever retriever,  boolean  useHttpFiltrationParams)  throws  IOException, SQLException {
		// Extracting http-parameter values
		filtrationType = request.getParameter("filter");
		 if  (request.getParameter(SYSTEM) !=  null )
			filtrationSystem = request.getParameter(SYSTEM);
		 else 
			filtrationSystem = String.valueOf(request.getSession().getAttribute(SYSTEM));
		filtrationId = request.getParameter("id");
		//Блоки и подсистемы
		filtrationSubsystem = String.valueOf(request.getSession().getAttribute(SUBSYSTEM));
		filtrationBlock = String.valueOf(request.getSession().getAttribute(BLOCK));
		
		 boolean  aptParams = /*filtrationType != null &&*/ filtrationId !=  null ;
		aptParams = aptParams && filtrationId != "";
		
	
		eqstore.setSchemaName("\"Oborud\"");
		pumpsStore.setSchemaName("\"Oborud\"");
		//pumpsStore.setSchemaName("\"E_Nasos\"");
		//transformerStore.setSchemaName("\"TR\"");
		transformerStore.setSchemaName("\"Oborud\"");
			
		
		eqstore.setTableName("equipment");
		pumpsStore.setTableName("pumps_list");	
		transformerStore.setTableName("transformers_list");
		// разная фильтрация ... пропущено

		 try  {
			retriever.retrieveByIdParam(eqstore, id);
			retriever.retrieveByIdParam(pumpsStore, id);
			retriever.retrieveByIdParam(transformerStore, id);
		}  catch  (SQLException e) {
			ErrorProvider.ShowError(response, ErrorCodes.DB_ERROR);
		}
			
			
		PrintWriter out = response.getWriter(); 
		out.println("А теперь смотрим длину массивов ...<br>");
		out.println("В eqstore: "+ eqstore.length()+"<br>"); // 2319
		out.println("В pumpsStore: "+ pumpsStore.length()+"<br>"); //0
		out.println("В transformerStore: "+ transformerStore.length()+"<br>"); //0
						
			
		out.println("Смотрим строки запроса...<br>");
		out.println("В eqstore: "+ eqstore.getQueryString()+"<br>");
		out.println("В pumpsStore: "+ pumpsStore.getQueryString()+"<br>");
		out.println("В transformerStore: "+ transformerStore.getQueryString()+"<br>");
						
		Collections.sort(eqlist,  new  Comparator<EquipmentBean>(){
			 public   int  compare(EquipmentBean eq1, EquipmentBean eq2) {
				 return  EquipmentList.compare(eq1, eq2);
			}
		});
// формирование html-файла ... пропущено 		
	}

Класс 3 (Самый для меня загадочный)
Код: plaintext
1.
2.
3.
4.
5.
 public   interface  Retriever {

	 void  retrieveByIdParam(EquipmentStore store,  long  id)  throws  SQLException;
	
}
ибо реализации этой функции я не нашел...
...
Рейтинг: 0 / 0
26.03.2010, 12:51
    #36544398
aleksandy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу подключиться к виду в PostgreSQL
vadim_bvКласс 3 (Самый для меня загадочный)
Код: plaintext
1.
2.
3.
4.
5.
 public   interface  Retriever {

	 void  retrieveByIdParam(EquipmentStore store,  long  id)  throws  SQLException;
	
}
ибо реализации этой функции я не нашел...
Это не класс, а интерфейс, который реализуется каким-то классом. Ищи по проекту классы, у которые "implements Retriever", в них и скрывается реализация методов.
...
Рейтинг: 0 / 0
29.03.2010, 09:41
    #36547482
vadim_bv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу подключиться к виду в PostgreSQL
aleksandy,

Ага, порылся. Кое-что нашел, но ясности это не прибавило... Там как раз прописываются разные фильтры.
...
Рейтинг: 0 / 0
29.03.2010, 10:26
    #36547570
vadim_bv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу подключиться к виду в PostgreSQL
Прихожу всё-таки к выводу, что дело в правах доступа...

Хотя через Borland C++ Builder - никаких проблем с подключением и отображением нет.



--
Рок-н-ролл - славное язычество!
...
Рейтинг: 0 / 0
31.03.2010, 12:16
    #36552533
vadim_bv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу подключиться к виду в PostgreSQL
Проблема решилась. Все эти вложенные классы могут содержать хитроумные опечатки и обращаться к несуществующим полям в запросе.

Тему можно закрыть.

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


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