Аватар для Merk30
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 6

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

27.03.2015, 18:36. Показов 2732. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru