powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Не могу подключиться к виду в PostgreSQL
8 сообщений из 8, страница 1 из 1
Не могу подключиться к виду в PostgreSQL
    #36538644
vadim_bv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Скажу сразу, я в Java полный ламер. Но мне достался проект от уволившегося программиста, Он худо-бедно работает, но надо его расширять.

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

Покажите пожалуйста как Вы конектитесь к СУБД через Java?
...
Рейтинг: 0 / 0
Не могу подключиться к виду в PostgreSQL
    #36541704
vadim_bv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Не могу подключиться к виду в PostgreSQL
    #36544398
aleksandy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vadim_bvКласс 3 (Самый для меня загадочный)
Код: plaintext
1.
2.
3.
4.
5.
 public   interface  Retriever {

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

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

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



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

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

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


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