Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.138.174.174] |
|
Сообщ.
#1
,
|
|
|
Вообщем есть такой вопрос. Я не знаю, как его корректо задать без ПОЛНОГО кода, но всё же попытаюсь. есть метод, который по нажатию кнопки должен добавлять в БД сервера Юзера. Естественно, коннект работает, проверяли. Добавление из консоли так же работает. Проверяли. а вот через форму не работает. Причём выдаёт : Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Authorization.InsertUser.actionPerformed(Workspace.java:131) как я понимаю, выброшено прерывание в строчке 131 ВОт метод, срабатывающий по нажатию кнопки: public void actionPerformed(ActionEvent e) { try{ DB_root cd = new DB_root(); Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet rs; //Creates users table if (!cd.TableExists("users", conn)) { System.out.println("Create table Users "+ !st.execute("CREATE TABLE Users ( " + "Id INT PRIMARY KEY," + " Name CHAR(20) ," + " SurName CHAR(20)," + " TNumber CHAR(9),")); id =1; }else { rs = st.executeQuery("SELECT id FROM users"); rs.last(); id= rs.getInt(1)+1; rs.close(); } query = "INSERT INTO Users VALUES ('"+id+"' , '"+name.getText()+"' , '"+sname.getText()+"' , '"+tel.getText()+"')"; //Id_text.setText("Added. ID: "+id); System.out.println("Add "+!st.execute(query)+" id: "+id); } catch (SQLException e1) { System.out.println("InsertUser"); e1.printStackTrace(); } } Честно говоря, тяжело понять, что не верно. ВОзможно ошибка идёт при взаимодействии между пакетами? ПОтому что коннект к серверу лежит в другом пакете. (Fill_Up_Table/DB_root) - но я его подключаю. Я понимаю, что без всего кода трудно понять, что к чему, но его там очень много |
Сообщ.
#2
,
|
|
|
Nort0n, а какая строчка 131???
|
Сообщ.
#3
,
|
|
|
" TNumber CHAR(9),")); id =1; }else // 131 { |
Сообщ.
#4
,
|
|
|
Даже не знаю, каким чудом эксепшен может лететь в строке с else. Я по крайней мере ничего не могу сказать и того куска кода, что ты выложил
|
Сообщ.
#5
,
|
|
|
я подозреваю, что это глюк драйвера. сейчас, попытаюсь разобраться
я приложу зипушник проекта, к сообщению. но без драйвера и вставшего postgree работать то всёравно не будет проект - сырцы, разрозненные куски и каменты, так что прошу строго не судить. коннект работал по крайней мере вчера Прикреплённый файлDataBase.zip (14.58 Кбайт, скачиваний: 59) |
Сообщ.
#6
,
|
|
|
1) скачал код, 131 строка это пустая строка, а не else.
И вообще приведенного куска кода в посте №3 в исходниках нет. 2) вы хоть какую-нибудь книжку бы по джаве почитали, как что называть, зачем классы нужны.. 3) дебаггером проходить пробовали? |
Сообщ.
#7
,
|
|
|
Да, кстати, Nort0n, подтверждаю, 131 строчка - пустая, вы уж там как-нить определитесь, хотя бы в какой строчке летит эксепшн
|
Сообщ.
#8
,
|
|
|
И вообще приведенного куска кода в посте №3 в исходниках нет. подтверждаю, но приведённый кусок кода это чуть модифицированный метод ActionPerformed. оба должны работать 2) вы хоть какую-нибудь книжку бы по джаве почитали, как что называть, зачем классы нужны.. заколебали. вы думаете я написал всё это с нуля, не читая никаких книжек по джаве? 3) дебаггером проходить пробовали? пробовали. Да, кстати, Nort0n, подтверждаю, 131 строчка - пустая, вы уж там как-нить определитесь, хотя бы в какой строчке летит эксепшн я же не с потолка взял эту цифру. у меня при компилляции ексепшн летит в строке 131. если она пустая, тогда скажите мне, в каких сслучаях возможно возникновение прерывания в пустой строчке кода |
Сообщ.
#9
,
|
|
|
Цитата Nort0n @ я же не с потолка взял эту цифру. у меня при компилляции ексепшн летит в строке 131. если она пустая, тогда скажите мне, в каких сслучаях возможно возникновение прерывания в пустой строчке кода значит это мистика и проблема решается исключительно через пляски с бубном а вообще вы уверены, что вы приложили именно тот код, ошибку от которого дали? откройте свой же архив у себя и сверьте количество пустых строк. кстати, а таблица существует? иначе query1 у вас равна "". |
Сообщ.
#10
,
|
|
|
Поставте:
System.out.println( cd+" "+st+" "+conn); перед первым ифом. |
Сообщ.
#11
,
|
|
|
а вообще вы уверены, что вы приложили именно тот код, ошибку от которого дали? откройте свой же архив у себя и сверьте количество пустых строк. кстати, а таблица существует? иначе query1 у вас равна "". нет, приложен старый проект. извиняюсь, сейчас исправлю ошибку. таблица прверяется на существование первым ифом Поставте: System.out.println( cd+" "+st+" "+conn); перед первым ифом. ничего не вывел Прикреплённый файлProject.zip (16.38 Кбайт, скачиваний: 47) |
Сообщ.
#12
,
|
|
|
Цитата Nort0n @ пробовали. и каков результат? в каком мой вылетело исключение, какой объект был null? Цитата Nort0n @ заколебали. вы думаете я написал всё это с нуля, не читая никаких книжек по джаве? может и читали, но явно поняли не все, или вы считаете, что в вашем коде очень приятно разбираться? Разбили бы все классы на отдельные файлы, авось и сами бы ошибку уже нашли |
Сообщ.
#13
,
|
|
|
Nort0n, твой код я пока не запустил (времени маловато), но к вечеру постараюсь его переделать. Код у тебя, уж прости, плохой. Во-первых, ты не соблюдаешь соглашения об именовании. Имена переменных и методов должны начинаться с маленькой буквы, если в имени используются несколько слов - они выделяются заглавными буквами. Например, Draw_Auth_Frame должно быть написано как drawAuthFrame, а лучше - drawAuthorizationFrame. Во-вторых, многие имена просто неинформативны, и читать код тяжело. И наконец, разбиение на классы у тебя сделано не лучшим образом - я с ходу не сумел понять, какой класс какую роль выполянет.
Постараюсь выкроить время, и написать код, как я бы сделал его сам. |
Сообщ.
#14
,
|
|
|
честно говоря, я в коде ничего не понял
зачем создавать cd в InsertUser.actionPreformed(), если там все методы статические? в Connect.TableExists() не закрывается ResultSet с метаданными мне кажется, что Connection приходит null'овым |
Сообщ.
#15
,
|
|
|
Nort0n, пвтаюсь разобраться, и мне это пока не удается. У тебя вызывается первая форма. При нажатии на OK, при условии, что мы ничего в поля не ввели, появляется вторая форма. Это правильно?
|
Сообщ.
#16
,
|
|
|
Дааа, ребят всем спасибо, я разобрался. МОгу выложить исходник с указанием на мои тупые ошибки
зачем создавать cd в InsertUser.actionPreformed(), если там все методы статические? событие нажатия кнопки Вообщем, у меня была ошибка в синтаксисе. один из запросов был написан неверно с т.зрения языка Sql. я создавал таблицу Users но после прописывания столбцов у меня стояла какая то левая запятая, => таблица не создавалась. так же в методе по нажатию кнопки я не вызывал коннект к серверу. на самом деле выхзов коннекта по нажатию кнопки Add - в корне не верен, вызывать его нужно в Main'e сразу после отрисовки обоих форм. Вот исходник, уже рабочий, всем спасибо за время, которое на меня потратили Прикреплённый файлDataBase.zip (14.53 Кбайт, скачиваний: 46) |