С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 23.12.2016
Сообщений: 4

Нужен совет в работе с базой данных

23.12.2016, 11:26. Показов 674. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Подскажите пожалуйста, кто работает с JAVA. Я стал ее изучать полгода назад. Опыт программирования не малый, но web языки. Сейчас учу JAVA. Вопрос следующий!

Есть проект с 2-мя JFrame. Одна форма главная, на ней есть кнопка. По кнопке вызывается другая форма. Написал класс для подключения к БД. В пределах данного класса данные из таблицы выводятся через println(). База Mysql кстати.

Ни как не могу понять, как соединить форму с этим файлом подключения к БД. Т.е. я так понимаю, что у проекта может быть много форм и все они как-то должны взаимодействовать через файл-класс подключения к БД. Не будешь ведь на каждой форме делать подключение, чтобы работать с базой? Недопонимаю какова правильная реализация работы с БД в JAVA. В web программировании у меня одно подключение к БД, и куча модулей, которые взаимодействуют через это единое подключение.

Вот я и не понимаю как любу форму связать с этим классом подключения к БД?

Вот класс подключения
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
/*
 * Класс Подключения к базе данных
 */
package java1;
 
import com.mysql.jdbc.Driver;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java1.AddProjectJFrame;
 
 
public class dbConfig {
 
    private static final String url = "jdbc:mysql://localhost:3306/java111";
    private static final String user = "user_j";
    private static final String password = "937";
    
    protected static Connection connection = null; //создание объекта connection
      
    public static void main(String[] args) throws SQLException{
 
        try {
            connection  = DriverManager.getConnection(url, user, password);
        }catch (SQLException sqlEx){
            //отладочная информация sqlEx.printStackTrace(); 
            System.out.println("Не удалось соединиться с базой данных!");
        }finally{
            if(connection != null)
            connection.close();
        }
    
    }//end.main
 
}//end.config

Метод в форме, в котором надо взаимодействовать с базой! Вывести данные через println();

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private void addProject() {
        
        String query = "select * from project";
        
        try {
     
            statement   = dbConfig.connection.createStatement(); //создание запроса           
            result      = statement.executeQuery(query); //выполнение запроса
            
            System.out.println(result);
            
        }catch (SQLException sqlEx) {
            System.out.println("Ошибка подключения к базе данных! Проверьте соединение с сервером!");
        }
      
 
    }
вылазит ошибка

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java1.AddProjectJFrame.addProject(AddPro jectJFrame.java:187)
at java1.AddProjectJFrame.jButton1ActionPer formed(AddProjectJFrame.java:171)
at java1.AddProjectJFrame.access$000(AddPro jectJFrame.java:18)
at java1.AddProjectJFrame$1.actionPerformed (AddProjectJFrame.java:84)
at javax.swing.AbstractButton.fireActionPer formed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actio nPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActio nPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPresse d(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListen er.mouseReleased(BasicButtonListener.jav a:252)
at java.awt.Component.processMouseEvent(Com ponent.java:6533)
at javax.swing.JComponent.processMouseEvent (JComponent.java:3324)
at java.awt.Component.processEvent(Componen t.java:6298)
at java.awt.Container.processEvent(Containe r.java:2236)
at java.awt.Component.dispatchEventImpl(Com ponent.java:4889)
at java.awt.Container.dispatchEventImpl(Con tainer.java:2294)
at java.awt.Component.dispatchEvent(Compone nt.java:4711)
at java.awt.LightweightDispatcher.retargetM ouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMo useEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchE vent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Con tainer.java:2280)
at java.awt.Window.dispatchEventImpl(Window .java:2746)
at java.awt.Component.dispatchEvent(Compone nt.java:4711)
at java.awt.EventQueue.dispatchEventImpl(Ev entQueue.java:758)
at java.awt.EventQueue.access$500(EventQueu e.java:97)
at java.awt.EventQueue$3.run(EventQueue.jav a:709)
at java.awt.EventQueue$3.run(EventQueue.jav a:703)
at java.security.AccessController.doPrivile ged(Native Method)
at java.security.ProtectionDomain$JavaSecur ityAccessImpl.doIntersectionPrivilege(Pr otectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecur ityAccessImpl.doIntersectionPrivilege(Pr otectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.jav a:731)
at java.awt.EventQueue$4.run(EventQueue.jav a:729)
at java.security.AccessController.doPrivile ged(Native Method)
at java.security.ProtectionDomain$JavaSecur ityAccessImpl.doIntersectionPrivilege(Pr otectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQ ueue.java:728)
at java.awt.EventDispatchThread.pumpOneEven tForFilters(EventDispatchThread.java:201 )
at java.awt.EventDispatchThread.pumpEventsF orFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsF orHierarchy(EventDispatchThread.java:105 )
at java.awt.EventDispatchThread.pumpEvents( EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents( EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDi spatchThread.java:82)
СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 11 секунды)

Добавлено через 18 минут
Неужели никто с базами не работал?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.12.2016, 11:26
Ответы с готовыми решениями:

Нужен совет по работе ПК
Всем доброго времени суток! Недавно поменял видюху и проц, переустановил Win10х64. И столкнулся с проблемой работы ПК, а именно: при...

Нужен Ваш совет по работе с файлами.
Как можно все графические файлы объединить в один какой-нить архив (или что-то подобное), из которого программа их будет считывать? Может...

Нужен совет по работе со службами WINDOWS
доброе время суток. уважаемые программисты подскажите где почитать и что были примеры службы windows задача:есть служба она...

7
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
23.12.2016, 11:33
Цитата Сообщение от espltdmh50 Посмотреть сообщение
at java1.AddProjectJFrame.addProject(AddPro jectJFrame.java:187)
Ошибка тут.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
23.12.2016, 11:35
вам бы книжку почитать
0
0 / 0 / 0
Регистрация: 23.12.2016
Сообщений: 4
23.12.2016, 12:26  [ТС]
Буду благодарен если подскажете хорошую книгу по JAVA + Mysql

Добавлено через 1 минуту
Можете хотябы последовательность объяснить? Я прав в том, что подключение к БД идет только один раз в отдельном классе, а далее просто должна любая форма связываться с этим классом? Если да, то каким образом связь идет? Как избежать повторного подключения, чтобы не ругался на connection?

Добавлено через 39 минут
Суть ошибки то понятна, что он не видит объект onnection, но через ссылку this.connection тоже не робит. Не буду же я в каждом методе вставлять connection = DriverManager.getConnection(url, user, password); чтобы проверять подключение?:??? Подскажите плиз, как в JAVA это должно правильно быть? Не хочу костыли всякие делать, делать, дык сразу хорошо)) Пожалуйста, помогите добить!
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
23.12.2016, 12:42
Цитата Сообщение от espltdmh50 Посмотреть сообщение
Буду благодарен если подскажете хорошую книгу по JAVA
вам любая подойдет. Зачем вы метод main написали вообще? Создавайте connection в конструкторе dbConfig и затем пользуйтесь им когда надо, предварительно создав объект dbConfig
0
0 / 0 / 0
Регистрация: 23.12.2016
Сообщений: 4
23.12.2016, 12:48  [ТС]
Метод main в dbConfig я создал для того, чтобы проверить было ли установлено соединение. Ну, чтобы получить состояние (все норм или отсутствует подключение к БД). В PHP с классами как-то проще у меня все. А тут с базой данных разобраться не могу, в правильном её применении в проекте JAVA
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
23.12.2016, 12:53
espltdmh50, БД тут не при чем. У вас проблемы с пониманием ООП. Где вы создаете объект класса dbConfig?
0
0 / 0 / 0
Регистрация: 23.12.2016
Сообщений: 4
23.12.2016, 13:10  [ТС]
Нормально у меня все с ООП. Я уже разобрался. Воспользовался советом, который вы дали выше) Все работает! Спасибо! Просто было недопонимание, первые разы с формами работаю, тоже ведь нужно время чтобы и голову переключить и привыкнуть к некоторым нюансам.) еще раз Спасибо ! Работает!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.12.2016, 13:10
Помогаю со студенческими работами здесь

Нужен совет по работе с методом scroll
Написал скрипт, который прячет или показывает два боковых блока, в зависимости от значения прокрученной области...только вот возникли баги,...

Ошибка при работе с базой данных
Есть форма, данные в которую загружаются через базу данных, при компиляции ошибок нет, но при работе возникает следующая: Additional...

Иероглифы при работе с базой данных!
Здравствуйте! На главной странице есть 2 текста - первый который был прописан в HTML коде, а второй берётся с базы данных. Вот...

Простое приложение по работе с базой данных
Дело в том, что школа сказала сделать проект, я вызвался,но навыком не хватает, надо сделать подключение к базе данных и вывод этих данных...

Ошибки при работе с базой данных
Здравствуйте, недавно начал изучать работу с базой данных через Qt. Использую Qt 4.8 и Sqlite Вроде код взят с книги М. Шлее, но всё...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru