Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243

Вызов метода с передачей Connection

07.12.2018, 12:36. Показов 1170. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый.Нашол в инете инфу что если есть метод который использует конект с базой то ,чтобы не в методе регулировать соединение а передать ему конект при вызове нужно вызывать этот метод и передавать ему конект в параметрах например,есть такой метод:
Java
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
public static String[][] topTenKomplex() throws ClassNotFoundException{
        
        List<String> topTenKomplex=new ArrayList<>();
        List<Double> topTenKomplexWert=new ArrayList<>();
        String [][] statik; 
        String topTen="select programm.programm,macro_daten.fm from programm join macro_daten "
                + "on programm.programm_id=macro_daten.programm_id order by macro_daten.fm desc limit 10;";
        String sDbDrv = MYSQLparameter.getDriver();
        String sDbUrl = MYSQLparameter.getURL();
        String sUsr = MYSQLparameter.getUser();
        String sPwd = MYSQLparameter.getPassword();
        Class.forName(sDbDrv);
        try( Connection cn=DriverManager.getConnection(sDbUrl, sUsr, sPwd);){
                    
            Statement st1=cn.createStatement();
            ResultSet rs1=st1.executeQuery(topTen);
            while(rs1.next()){
                topTenKomplex.add(rs1.getString(1));
                topTenKomplexWert.add(rs1.getDouble(2));
            }statik=new String[topTenKomplex.size()][2];
            for(int i=0;i<statik.length;i++){
                    
                statik[i][0]=topTenKomplex.get(i);
                statik[i][1]=Double.toString(topTenKomplexWert.get(i));         
                
            }
            cn.close();
        }catch(Exception e){e.printStackTrace();statik=new String[topTenKomplex.size()][2];}
 
        return statik;
    }
и если вызвать его и передать ему конект то он будет выглядеть так:

Java
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
public static String[][] topTenKomplex(Connection c) {
        
        List<String> topTenKomplex=new ArrayList<>();
        List<Double> topTenKomplexWert=new ArrayList<>();
        String [][] statik; 
        String topTen="select programm.programm,macro_daten.fm from programm join macro_daten "
                + "on programm.programm_id=macro_daten.programm_id order by macro_daten.fm desc limit 10;";
        
        try( Statement st1=c.createStatement();ResultSet rs1=st1.executeQuery(topTen);){                        
            
            while(rs1.next()){
                topTenKomplex.add(rs1.getString(1));
                topTenKomplexWert.add(rs1.getDouble(2));
            }statik=new String[topTenKomplex.size()][2];
            for(int i=0;i<statik.length;i++){
                    
                statik[i][0]=topTenKomplex.get(i);
                statik[i][1]=Double.toString(topTenKomplexWert.get(i));         
                
            }
        
        }catch(Exception e){e.printStackTrace();statik=new String[topTenKomplex.size()][2];}
 
        return statik;
    }
из чего следует код сократили и все по фэншую,но если этод метод вызывается из jsp то значит этод конект придётся делать в этой jsp,а стоит ли? и правильны ли выводы?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.12.2018, 12:36
Ответы с готовыми решениями:

Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода
В базовом классе метод помечен как virtual. Насколько я понял из книги: override означает, что метод не утрачивает связи с базовым...

Вызов приложения с передачей параметров
Dobriy den'!! Mne nujno vizvat' prilojenie i peredat' emu parametri iz moyey progi. Kak eto sdelat' м C# ?

Вызов ХП из ASP c передачей параметров
Как использовать пареметры ?? Вот код : oCmd = Server.CreateObject('ADODB.Command'); ...

15
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
07.12.2018, 14:04
если это вызывается изjsp, значит надо прочитать, что такое mvc

Добавлено через 45 секунд
ну и да код говняный в любом случае
1
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
07.12.2018, 14:20  [ТС]
как всегда море полезной инфы от самого продвинутого кодера ,родившегося с клавой в руках..---->
Цитата Сообщение от xoraxax Посмотреть сообщение
в любом случае
..тоесть шансов поправить нет..игнор твоих мнений.Нестоит тебе залазить в темы ,чтобы только погавнить!.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
07.12.2018, 14:45
DimaxDe, ты просто неспособен увидеть ничего больше. По твоему все хотят тебе зла?
1
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
07.12.2018, 21:40  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
По твоему все хотят тебе зла?
помоему если хочеш памочь помоги,упоминание mvc несет в данном случае 0 информации,я понимаю ,что значит модэль вьюшка и контроллер, а об остальном из твоего сообщения я тебе прокомментировал.

Добавлено через 6 часов 48 минут
да неуж нет никаво на форуме кто может памоч с таким простым кодом?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
07.12.2018, 22:13
DimaxDe, если бы ты понимал, что такое mvc, то такой вопрос бы не возник. Так что, возможно, пришло время перечитать. А если бы нормально попросил, я бы, может, рассказал, что не так с твоим кодом. Но раз ты так настроен, то, наверно, не буду.
1
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
07.12.2018, 22:59  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
если бы ты понимал, что такое mvc,
если ты думаеш ,что ты один такой умный и имееш право срать в чужой теме то вот тебе достойный ответ из немецкого форума,англичане вот только молчат.
Lass Methodenaufrufe in JSP nach Möglichkeit sein.
Eine Möglichkeit, dass zu kapseln, sind Repository- und DOA-Pattern, außerdem solltest du dir mal Connection-Pools angucken.
Я не сомневаюсь ,что тебе есть что сказать ,но манера общения у тебя оставляет желать лучшего.

Добавлено через 14 минут
Переведу ,а то транслятор неправильно перевёл:
в джсп методы лучше не вызывай.Одна возможност это за инкапсулировать это Repository-и DOA-Pattern.,кроме этого тебе следует наконец посмотреть пулы конекторов.

Добавлено через 15 минут
есть кто на русском форуме кто может,что-то дельное посоветовать?
0
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
12.12.2018, 17:31  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
ну и да код говняный в любом случае
https://habr.com/post/432822/

Добавлено через 36 минут
Следуя достойному совету,изучил пулы соединений,выбрал с3р0 смастерил следующий класс:
Java
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
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
 
import com.mchange.v2.c3p0.ComboPooledDataSource;
 
public class ComboPoole{
     String sDbUrl = MYSQLparameter.getURL();
     String sUsr = MYSQLparameter.getUser();
     String sPwd = MYSQLparameter.getPassword();
     String sDrv = MYSQLparameter.getDriver();
    private ComboPooledDataSource cpds;
    private static ComboPoole dataSource;
    
private  ComboPoole() {
    
     cpds = new ComboPooledDataSource();
    try{
        cpds.setDriverClass(sDrv);
    }catch (PropertyVetoException e) {
        e.printStackTrace();
    }
        cpds.setJdbcUrl(sDbUrl);
        cpds.setUser(sUsr);
        cpds.setPassword(sPwd);
        
        Properties prop=new Properties();
        prop.setProperty("user", sUsr);
        prop.setProperty("password", sPwd);
        prop.setProperty("useUnicode", "true");
        prop.setProperty("characterEncoding", "UTF8");
        
        cpds.setProperties(prop);
        cpds.setInitialPoolSize(10);
        cpds.setMaxStatements(180);
        cpds.setMaxStatementsPerConnection(180);
        cpds.setMinPoolSize(10);
        cpds.setAcquireIncrement(10);
        cpds.setMaxPoolSize(60);
        cpds.setMaxIdleTime(30);
        //cpds.setNumHelperThreads(10);
    }
public static ComboPoole getInstance(){
    if(dataSource==null)dataSource=new ComboPoole();
    return dataSource;
}
public Connection getConnection(){
    Connection conn=null;
    try{
        conn=cpds.getConnection();
    }catch(SQLException e){e.printStackTrace();}
    return conn;
}
}
раздал соединения:
Java
1
2
3
4
view.jsp
Connection cn=ComboPoole.getInstance().getConnection();
+"<tr><td style=\"text-align:left\"><b>Das Programm "+DBfragen.maxKomplex(cn).getFirst()+
" hat den grössten Komplexitätswert( FM )</b></td><td>"+DBfragen.maxKomplex(cn).getSecond()+"</td></tr>"
осталась проблемма с методами в jsp.Есть несколько вариантов.Думаю попробовать EJB,почитал,посмотрел ,вроде подходит.
Может кто ссылками на EJB для чайников поделится или ,что лучше посоветовать?
0
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
13.12.2018, 16:23  [ТС]
iSmokeJC , может подскажеш что нибудь,а то неделю висит тема ,толку нет.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
13.12.2018, 17:58
DimaxDe, а я - то что? Здесь бывают люди куда как более разбирающиеся в джаве, а я такой же юный падаван.
Впрочем, свои пять копеек вставить попробую.
Кстати, зря ты так к xoraxax, он дело говорит, да и немецкие коллеги это подтверждают.
Из вьюхи обращаться к БД - это полный моветон. Посуди сам, на своем примере - проблемы начались уже на самых первых этапах разработки, дальше еще хлеще будет. Вся соль MVC именно в том и состоит, что вьюха не должна ничего знать про какую-то там БД, соединения и проч. Она отдала куда-то какие-то данные, ей что-то кто-то вернул, она показала. Т.е. контроллер поймал запрос, с помощью какого-либо сервиса получил/сделал требуемое и вернул результат. Получается, основная логика сосредоточена таки в сервисах, но никак не во вью. Т.е. логики во вьюхе должно быть минимальное количество, в идеале - вообще без нее.
Конкретно по сабжу сказать ничего не могу, JSP/JSTL изучал на уровне "знать, как работает", и практически не применял. Тем более не создавал коннектов к базе
Цитата Сообщение от DimaxDe Посмотреть сообщение
что лучше посоветовать
Spring Boot Data/JPA, а вью уж сам выбирай, можно и JSP. Я пробовал Thymeleaf - гуд, сейчас раскуриваю RESTful, на фронте - jQuery(AJAX).
1
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
13.12.2018, 18:13  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Из вьюхи обращаться к БД - это полный моветон.
Это полностью подтверждаю и согласен ,посути тему и начал из-за этого а вот насчёт
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Кстати, зря ты так к xoraxax, он дело говорит
думаеш мне чем-то поможет если я 300 раз перечитаю mvc на 300 сайтах?
яж об этом и спрашивал совета
Цитата Сообщение от DimaxDe Посмотреть сообщение
jsp то значит этод конект придётся делать в этой jsp,а стоит ли?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
13.12.2018, 19:00
Цитата Сообщение от DimaxDe Посмотреть сообщение
Это полностью подтверждаю и согласен ,посути тему и начал из-за этого
так если ты это понимаешь, зачем делаешь наоборот? какой смысл создавать тему, в которой спрашивать, как делать неправильно? у тебя логики есть хоть грам?
1
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
13.12.2018, 19:06  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
спрашивать, как делать неправильно?
ничего такого я не спрашива,я спрашивал как вынести конект а заодно и вызов метода из жсп.Извиняюсь если вопрос непонятно сформулировал.Если есть дельный совет по этому поводу,буду благодарен.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
13.12.2018, 19:21
Этого вообще не должно быть в jsp. Не надо выносить то, чего не должно быть. Если оно там есть, значит автор не понимает, что такое MVC и SOLID. Стало быть смотри сообщение №2.
1
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
13.12.2018, 21:57  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
Этого вообще не должно быть в jsp.
в жсп хтмл таблица показывающая всякие данные из бд .В таблицу даные поступают из ява метода в 2д массиве.Что в этой связке не так?Можно канечно вместо явы метода вызывать сервлет с параметрами по которым сортировать запросы к бд,только гемора от этого только больше будет как мне кажется.Есть еще вариант ,если сервлет готовую таблицу пересылать будет, но это пока только в теории ,ну и последний совет который мне дали это ява бинсы,тоже еще не разобрался.Так какой путь ты посоветовал бы?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
13.12.2018, 22:26
господи, в контроллере дергаешь сервис, который достает из базы все, что требуется, кладет в модель, модель отдает во вьюху, вьюха рендерит модель. Каждый компонент занимается своим делом. Посмотри какой нибудь petclinic на спринге, например.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.12.2018, 22:26
Помогаю со студенческими работами здесь

Вызов функции-обработчика с передачей аргумента
Помогите, пожалуйста, разобраться. Объявляю function declaration: function setPosition(position) { ...

Вызов функции из DLL (C++) с передачей указателя на массив
Добрый день! Проблема следующая: нужно вызвать функцию из DLL (написана на c++). При этом в качестве параметров передаются указатели на...

Вызов процедуры с передачей параметров через стек
Программы различаются между собой способом передачи параметров в процедуру и типом процедуры: Программа 1. Передача параметров через...

Вызов функции с передачей указателей на два массива
Всем привет, помогите найти ошибку. Суть, из функции main() вызывается функция int test(char* v, char* c) и ей передаётся два указателя на...

Вызов методов классов друг у друга (вызов метода из другого класса)
Есть несколько классов, которые могут вызывать методы (функции) друг у друга. Логика: класс1 имеет метод А, класс2 имеет метод Б, класс1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru