Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Java > Java + Sql |
Автор: Nort0n 14.11.07, 21:40 |
Вообщем есть такой вопрос. Я не знаю, как его корректо задать без ПОЛНОГО кода, но всё же попытаюсь. есть метод, который по нажатию кнопки должен добавлять в БД сервера Юзера. Естественно, коннект работает, проверяли. Добавление из консоли так же работает. Проверяли. а вот через форму не работает. Причём выдаёт : Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at Authorization.InsertUser.actionPerformed(Workspace.java:131) как я понимаю, выброшено прерывание в строчке 131 ВОт метод, срабатывающий по нажатию кнопки: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 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) - но я его подключаю. Я понимаю, что без всего кода трудно понять, что к чему, но его там очень много |
Автор: Konigsberg 14.11.07, 21:47 |
Nort0n, а какая строчка 131??? ![]() |
Автор: Nort0n 14.11.07, 21:50 |
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> " TNumber CHAR(9),")); id =1; }else // 131 { |
Автор: Konigsberg 14.11.07, 22:00 |
Даже не знаю, каким чудом эксепшен может лететь в строке с else. Я по крайней мере ничего не могу сказать и того куска кода, что ты выложил ![]() |
Автор: Nort0n 14.11.07, 22:01 |
я подозреваю, что это глюк драйвера. сейчас, попытаюсь разобраться я приложу зипушник проекта, к сообщению. но без драйвера и вставшего postgree работать то всёравно не будет проект - сырцы, разрозненные куски и каменты, так что прошу строго не судить. коннект работал по крайней мере вчера ![]() |
Автор: DUKe 14.11.07, 23:12 |
1) скачал код, 131 строка это пустая строка, а не else. И вообще приведенного куска кода в посте №3 в исходниках нет. 2) вы хоть какую-нибудь книжку бы по джаве почитали, как что называть, зачем классы нужны.. 3) дебаггером проходить пробовали? |
Автор: Konigsberg 15.11.07, 01:45 |
Да, кстати, Nort0n, подтверждаю, 131 строчка - пустая, вы уж там как-нить определитесь, хотя бы в какой строчке летит эксепшн ![]() |
Автор: Nort0n 15.11.07, 06:29 |
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> И вообще приведенного куска кода в посте №3 в исходниках нет. ![]() <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 2) вы хоть какую-нибудь книжку бы по джаве почитали, как что называть, зачем классы нужны.. заколебали. вы думаете я написал всё это с нуля, не читая никаких книжек по джаве? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 3) дебаггером проходить пробовали? пробовали. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Да, кстати, Nort0n, подтверждаю, 131 строчка - пустая, вы уж там как-нить определитесь, хотя бы в какой строчке летит эксепшн я же не с потолка взял эту цифру. у меня при компилляции ексепшн летит в строке 131. если она пустая, тогда скажите мне, в каких сслучаях возможно возникновение прерывания в пустой строчке кода |
Автор: zera 15.11.07, 06:55 |
Цитата Nort0n @ я же не с потолка взял эту цифру. у меня при компилляции ексепшн летит в строке 131. если она пустая, тогда скажите мне, в каких сслучаях возможно возникновение прерывания в пустой строчке кода значит это мистика и проблема решается исключительно через пляски с бубном а вообще вы уверены, что вы приложили именно тот код, ошибку от которого дали? откройте свой же архив у себя и сверьте количество пустых строк. кстати, а таблица существует? иначе query1 у вас равна "". |
Автор: mrco 15.11.07, 07:12 |
Поставте: System.out.println( cd+" "+st+" "+conn); перед первым ифом. |
Автор: Nort0n 15.11.07, 07:23 |
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> а вообще вы уверены, что вы приложили именно тот код, ошибку от которого дали? откройте свой же архив у себя и сверьте количество пустых строк. кстати, а таблица существует? иначе query1 у вас равна "". нет, приложен старый проект. извиняюсь, сейчас исправлю ошибку. таблица прверяется на существование первым ифом <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Поставте: System.out.println( cd+" "+st+" "+conn); перед первым ифом. ничего не вывел |
Автор: DUKe 15.11.07, 07:31 |
и каков результат? в каком мой вылетело исключение, какой объект был null? может и читали, но явно поняли не все, или вы считаете, что в вашем коде очень приятно разбираться? Разбили бы все классы на отдельные файлы, авось и сами бы ошибку уже нашли |
Автор: batigoal 15.11.07, 08:06 |
Nort0n, твой код я пока не запустил (времени маловато), но к вечеру постараюсь его переделать. Код у тебя, уж прости, плохой. Во-первых, ты не соблюдаешь соглашения об именовании. Имена переменных и методов должны начинаться с маленькой буквы, если в имени используются несколько слов - они выделяются заглавными буквами. Например, Draw_Auth_Frame должно быть написано как drawAuthFrame, а лучше - drawAuthorizationFrame. Во-вторых, многие имена просто неинформативны, и читать код тяжело. И наконец, разбиение на классы у тебя сделано не лучшим образом - я с ходу не сумел понять, какой класс какую роль выполянет. Постараюсь выкроить время, и написать код, как я бы сделал его сам. |
Автор: Grab[SSAU] 15.11.07, 08:16 |
честно говоря, я в коде ничего не понял ![]() зачем создавать cd в InsertUser.actionPreformed(), если там все методы статические? в Connect.TableExists() не закрывается ResultSet с метаданными мне кажется, что Connection приходит null'овым |
Автор: batigoal 15.11.07, 14:23 |
Nort0n, пвтаюсь разобраться, и мне это пока не удается. У тебя вызывается первая форма. При нажатии на OK, при условии, что мы ничего в поля не ввели, появляется вторая форма. Это правильно? |
Автор: Nort0n 15.11.07, 17:25 |
Дааа, ребят всем спасибо, я разобрался. МОгу выложить исходник с указанием на мои тупые ошибки <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> зачем создавать cd в InsertUser.actionPreformed(), если там все методы статические? событие нажатия кнопки Вообщем, у меня была ошибка в синтаксисе. один из запросов был написан неверно с т.зрения языка Sql. я создавал таблицу Users но после прописывания столбцов у меня стояла какая то левая запятая, => таблица не создавалась. так же в методе по нажатию кнопки я не вызывал коннект к серверу. на самом деле выхзов коннекта по нажатию кнопки Add - в корне не верен, вызывать его нужно в Main'e сразу после отрисовки обоих форм. Вот исходник, уже рабочий, всем спасибо за время, которое на меня потратили |