Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
 Аватар для Merk30
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 6

Java + Apache Derby (сохранить данные пользователя в базе данных для дальнейшего использования)

27.03.2015, 18:36. Показов 2725. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Пишу приложения, необходимо сохранить данные пользователя в базе данных и потом извлечь их оттуда для дальнейшего использования (например вывести в текстовом поле в фрейме)... Выскакивает исключение java.sql.SQLSyntaxErrorException: Синтаксическая ошибка: Encountered "User" at line 1, column 14.

Помогите найти и исправить ошибку
Вот что успел уже написать:
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
import java.sql.*;
 
public class DerbyDBManager {
   private static Connection con = null ;   
   private static final String driver = "org.apache.derby.jdbc.EmbeddedDriver" ;
   private static final String url = "jdbc:derby:" ;
   private static String dbName = null;
    
   public DerbyDBManager(String dbName) {
       this.dbName=dbName;
       if(!dbExists()) {
           try {
               Class.forName(driver) ;
               // Подключение к БД или её создание
               con = DriverManager.getConnection(url + dbName + ";create=true");
           } catch (ClassNotFoundException e) {
               e.printStackTrace();
           } catch (SQLException e) {
               e.printStackTrace();
           }
       }
   }
    
   private Boolean dbExists()
   {
       Boolean exists = false ;
       try {
           Class.forName(driver) ;
           con = DriverManager.getConnection(url + dbName);
           exists = true ;
       } catch(Exception e) {
           // Если база не создана то ничего не делаем
       }
       return(exists) ;
   }
   // запрос на обновление базы данных  (INSERT, UPDATE, CREATE TABLE и т.п.)
   public void executeUpdate(String sql) throws SQLException {
       Statement stmt = con.createStatement() ;
       int count = stmt.executeUpdate(sql) ;
       stmt.close() ;
   } 
 
   // запрос на выборку данных из базы
   public ResultSet executeQuery(String sql) throws SQLException {
       Statement stmt = con.createStatement() ;
       ResultSet result = stmt.executeQuery(sql) ;
       return result;
   }
}
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
public class User {
    private static String name;
    private static String login;
    private static String password;
    
    public User(String aName, String aLogin, String aPassword)
    {
        name=aName;
        login=aLogin;
        password=aPassword;
    }
    
    public static String getName()
    {
        return name;
    }
    
    public static String getLogin()
    {
        return login;
    }
    
    public static String getPassword()
    {
        return password;
    }
    
 
}
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
 
public class TestFrame extends JFrame
{
    private Panel2 panel2;
    private Panel3 panel3;
    private JTextArea textArea;
    private static User user;
    private DerbyDBManager db = new DerbyDBManager("dbtest");
    static Connection conn = null;
    
    public TestFrame()
    {
        setTitle("ShellTest");
        setSize(450, 550);
        setLocation(350, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        panel2=new Panel2();
        panel3=new Panel3();
        
 
        add(panel2, BorderLayout.CENTER);
        add(panel3, BorderLayout.NORTH);
 
        setVisible(true);
    }
    
    public static void fillDB(DerbyDBManager db) throws SQLException {
        db.executeUpdate("INSERT INTO User VALUES(" + 
               user.getName() + "," + user.getLogin() +"," + user.getPassword() + ")"); 
    }
    
    
    public class Panel2 extends JPanel
    {
        public Panel2()
        {
            textArea=new JTextArea(20,40);
            add(new JScrollPane(textArea));
            
        }
    }
    
    public class Panel3 extends JPanel
    {
        private JPanel regPanel;
        private JTextField regNume;
        private JTextField regLogin;
        private JPasswordField regPassword;
        private JPanel butRegPanel;
        private JButton regButton;
        private JButton cancelButton;
        
        public Panel3()
        {
            setLayout(new BorderLayout());
            regPanel = new JPanel();
            regPanel.setLayout(new GridLayout(3,2));
            regPanel.add(new JLabel("Nume, Prenume:"));
            regNume=new JTextField("");
            regPanel.add(regNume);
            regPanel.add(new JLabel("Login:"));
            regLogin=new JTextField("");
            regPanel.add(regLogin);
            regPanel.add(new JLabel("Password:"));
            regPassword=new JPasswordField("");
            regPanel.add(regPassword);
 
            butRegPanel=new JPanel();
            regButton=new JButton("Inregistreaza");
            regButton.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent event)
                {
                    user=panel3.getUser();
                    try {
                           try {
                               // пишем в таблицу
                               fillDB(db);
                           } catch(SQLException e) {
                               // если БД не существовала, то создаем таблицу
                               // и после этого заполняем её значениями
                               db.executeUpdate("CREATE TABLE User(name String, login String, password String)");
                               fillDB(db);
                               
                               ResultSet rs = db.executeQuery("SELECT * FROM User");
                               while(rs.next()) {
                                   textArea.append("name = "+rs.getString(1)+", login = "+rs.getString(2)+", password = "+rs.getString(3)+"\n");
                               }
                           }
                       } catch(SQLException e) {
                           e.printStackTrace();
                       }
                }
            });
            butRegPanel.add(regButton);
            add(regPanel, BorderLayout.NORTH);
            add(butRegPanel, BorderLayout.CENTER);
        }
        
        public void setUser(User u)
        {
            regNume.setText(u.getName());
            regLogin.setText(u.getLogin());
            regPassword.setText(u.getPassword());
        }
        
        public User getUser()
        {
            return new User(regNume.getText(), regLogin.getText(), new String(regPassword.getPassword()));
        }
    }
    
    public static void main(String[] args) {
           EventQueue.invokeLater(new Runnable()
            {
                public void run()
                {
                    new TestFrame();
                }
            });
       }
}
Добавлено через 9 минут
Вот что выскакивает когда пытаюсь сохранить данные в таблице и извлечь их оттуда
Кликните здесь для просмотра всего текста
java.sql.SQLSyntaxErrorException: Синтаксическая ошибка: Encountered "User" at line 1, column 14.
at org.apache.derby.impl.jdbc.SQLExceptionF actory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generate CsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionRe sourceImpl.wrapInSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionRe sourceImpl.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnecti on.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.ConnectionChi ld.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatemen t.execute(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatemen t.executeLargeUpdate(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatemen t.executeUpdate(Unknown Source)
at DerbyDBManager.executeUpdate(DerbyDBMana ger.java:41)
at TestFrame$Panel3$1.actionPerformed(TestF rame.java:87)
at javax.swing.AbstractButton.fireActionPer formed(Unknown Source)
at javax.swing.AbstractButton$Handler.actio nPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActio nPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPresse d(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListen er.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unk nown Source)
at javax.swing.JComponent.processMouseEvent (Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unk nown Source)
at java.awt.Container.dispatchEventImpl(Unk nown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetM ouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMo useEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchE vent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unk nown Source)
at java.awt.Window.dispatchEventImpl(Unknow n Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Un known Source)
at java.awt.EventQueue.access$400(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivile ged(Native Method)
at java.security.ProtectionDomain$1.doInter sectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doInter sectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivile ged(Native Method)
at java.security.ProtectionDomain$1.doInter sectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknow n Source)
at java.awt.EventDispatchThread.pumpOneEven tForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsF orFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsF orHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents( Unknown Source)
at java.awt.EventDispatchThread.pumpEvents( Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: ERROR 42X01: Синтаксическая ошибка: Encountered "User" at line 1, column 14.
at org.apache.derby.iapi.error.StandardExce ption.newException(Unknown Source)
at org.apache.derby.iapi.error.StandardExce ption.newException(Unknown Source)
at org.apache.derby.impl.sql.compile.Parser Impl.parseStatementOrSearchCondition(Unk nown Source)
at org.apache.derby.impl.sql.compile.Parser Impl.parseStatement(Unknown Source)
at org.apache.derby.impl.sql.GenericStateme nt.prepMinion(Unknown Source)
at org.apache.derby.impl.sql.GenericStateme nt.prepare(Unknown Source)
at org.apache.derby.impl.sql.conn.GenericLa nguageConnectionContext.prepareInternalS tatement(Unknown Source)
... 41 more
java.sql.SQLSyntaxErrorException: Синтаксическая ошибка: Encountered "User" at line 1, column 14.
at org.apache.derby.impl.jdbc.SQLExceptionF actory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generate CsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionRe sourceImpl.wrapInSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionRe sourceImpl.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnecti on.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.ConnectionChi ld.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatemen t.execute(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatemen t.executeLargeUpdate(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatemen t.executeUpdate(Unknown Source)
at DerbyDBManager.executeUpdate(DerbyDBMana ger.java:41)
at TestFrame$Panel3$1.actionPerformed(TestF rame.java:87)
at javax.swing.AbstractButton.fireActionPer formed(Unknown Source)
at javax.swing.AbstractButton$Handler.actio nPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActio nPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPresse d(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListen er.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unk nown Source)
at javax.swing.JComponent.processMouseEvent (Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unk nown Source)
at java.awt.Container.dispatchEventImpl(Unk nown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetM ouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMo useEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchE vent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unk nown Source)
at java.awt.Window.dispatchEventImpl(Unknow n Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Un known Source)
at java.awt.EventQueue.access$400(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivile ged(Native Method)
at java.security.ProtectionDomain$1.doInter sectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doInter sectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivile ged(Native Method)
at java.security.ProtectionDomain$1.doInter sectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknow n Source)
at java.awt.EventDispatchThread.pumpOneEven tForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsF orFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsF orHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents( Unknown Source)
at java.awt.EventDispatchThread.pumpEvents( Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: ERROR 42X01: Синтаксическая ошибка: Encountered "User" at line 1, column 14.
at org.apache.derby.iapi.error.StandardExce ption.newException(Unknown Source)
at org.apache.derby.iapi.error.StandardExce ption.newException(Unknown Source)
at org.apache.derby.impl.sql.compile.Parser Impl.parseStatementOrSearchCondition(Unk nown Source)
at org.apache.derby.impl.sql.compile.Parser Impl.parseStatement(Unknown Source)
at org.apache.derby.impl.sql.GenericStateme nt.prepMinion(Unknown Source)
at org.apache.derby.impl.sql.GenericStateme nt.prepare(Unknown Source)
at org.apache.derby.impl.sql.conn.GenericLa nguageConnectionContext.prepareInternalS tatement(Unknown Source)
... 41 more


Добавлено через 47 минут
исправил название таблицы(USER является ключевым словом в DerbyDB. Таблица не может так называться.), но теперь другое выскакивает... java.sql.SQLSyntaxErrorException: TYPE 'STRING' не существует.

Добавлено через 28 минут
java.sql.SQLException: Не удалось запустить базу данных 'dbtest';
теперь не знаю в чем проблема, база данных не запускается

Добавлено через 1 час 49 минут
Вот последняя ошибка которую не могу найти java.sql.SQLSyntaxErrorException: Синтаксическая ошибка: Encountered "," at line 1, column 35.
То есть база уже запускается(после переименования таблицы и типа данных в ней) но там он видит исключение. Я толком не могу понять, ошибка во время создания(обновления таблицы) или во время извлечения данных...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.03.2015, 18:36
Ответы с готовыми решениями:

Создание базы данных Java DB (Apache Derby)
Здравствуйте. Помогите разобраться с созданием базы данных Derby в Eclipse. В Eclipse включаю панель Data Source Explorer (Window ->...

Сохранить отрисованный объект в ОЗУ для дальнейшего использования
Рисую в окне график. Есть функция которая вычисляет и выводит его размер и расположение линий. Нужно чтобы эта сетка графика сохранялась в...

Как распознавать данные в String для дальнейшего использования?
Решил написать программу, которая будет решать, заранее заданные пользователем, математические функции. От него лишь потребуется ввести X,...

1
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
28.03.2015, 23:22
Для вставки значений в базу данных пользуйтесь PreparedStatement - http://docs.oracle.com/javase/... pared.html
Это избавит вас от многих проблем
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.03.2015, 23:22
Помогаю со студенческими работами здесь

Временное хранилище для дальнейшего использования данных
Здравствуйте! Я только начинаю изучать C#.Net. У меня есть маленькая программка, для нее нужно создать временное хранилище, типа dll. Можно...

Не получается сохранить данные в Базе Данных
При нажатии на кнопку числа должны добавиться из DataGridView в базу данных, но вылетает такая ошибка, подскажите как исправить?

Как сохранить данные пользователя в локальную базу данных
Уважаемые! Суть моей проблемы (незнание тк только начал изучать Windows Form на C#) Задумал для себя параллельно писать программу с...

Очистить значение переменной для дальнейшего использования
#include <iostream> #include <conio.h> using namespace std; int main() { setlocale(LC_ALL, "Rus"); int a(1); a = a +...

Передача пераметров объекта для дальнейшего использования
Здравствуйте! Пытаюсь написать простенький код на С++ с использованием классов. Не получается передать уже рассчитанный параметр в главной...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru