Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966

Запрос insert на сервлете. Проверить код

08.01.2014, 21:21. Показов 1771. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане!
пожалуйста проверьте этот код и подскажите в чем у меня ошибка?
краце о задаче: есть таблица "U" на нем "ID", "NIK", "PASSWORD";
создана sequence S_U;
задача является из сервлета выполнить sql запрос
SQL
1
INSERT INTO u VALUES (s_u.nextval, "nik", "pass");
вот сам код который я написал:
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
package qwerty.qwe;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import java.sql.Connection;
 
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
 
import java.sql.Statement;
 
import javax.naming.Context;
 
import javax.naming.InitialContext;
 
import javax.servlet.*;
import javax.servlet.http.*;
 
public class Regist extends HttpServlet {
    private static final String CONTENT_TYPE = "text/html; charset=UTF-8";
 
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }
 
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       
        String nik = "";
        String pass = "";
        try {
            nik = request.getParameter("nik");
            pass = request.getParameter("pass");
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        response.setContentType(CONTENT_TYPE);
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>S1</title></head>");
        out.println("<body>");
        Connection conn = null;
        Context ctx = null;
        ResultSet rs = null;
        PreparedStatement stmt = null;
       String sql = "insert into u (id,nik,pass) values (s_u.nextval,?1,?2);";
        try {
            ctx = new InitialContext();
            conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1522:orcl", "test", "test");
            stmt = conn.prepareStatement(sql);
            stmt.setString(1, request.getParameter("nik"));
            stmt.setString(2, request.getParameter("pass"));
        
            stmt.executeUpdate();
            //conn.commit();
 
        } catch (Exception e) {
            // TODO: Add catch code
            out.println("<br/>-----------"+e);
        } finally {
            try {
                rs.close();
            } catch (Exception e) {
                // TODO: Add catch code
                e.printStackTrace();
            }
            try {
                ctx.close();
            } catch (Exception e) {
                // TODO: Add catch code
                e.printStackTrace();
            }
            try {
                stmt.close();
            } catch (Exception e) {
                // TODO: Add catch code
                e.printStackTrace();
            }
            try {
                conn.close();
            } catch (Exception e) {
                // TODO: Add catch code
                e.printStackTrace();
            }
        }
 
        out.println("</body></html>");
        out.close();
    }
}
и в конечном итоге получаю Exception типа java.sql.SQLSyntaxErrorException: ORA-00917: отсутствует запятая
вот и не могу понять какую ошибку делаю...
помогите разобраться ПЛИЙЗ
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.01.2014, 21:21
Ответы с готовыми решениями:

Json - как сформировать в сервлете и отправить на запрос аякса ?
Здравствуйте хочу сформировать json обьект в сервлете примерно такой : { &quot;Вопрос 1&quot;: { &quot;AContent&quot;: &quot;Ответ...

Как обработать запрос из html в сервлете и вернуть ответ?
при подключении к базе выдается куча результатов. необходимо, чтобы информация выдавалась частями, т.е. делилась на несколько страниц, а...

Перенос параметра при INSERT в другой запрос INSERT
Здравствуйте. Есть таблица Сlient, в которую при INSERT ClientID присваивается инкрементом. На этой же странице ниже прописываю второй...

11
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
08.01.2014, 21:39
Цитата Сообщение от asus Посмотреть сообщение
java.sql.SQLSyntaxErrorException: ORA-00917: отсутствует запятая
может у тебя в sql запросе отсутствует запятая?

Не по теме:

это должен был кто-то сказать:D



Добавлено через 45 секунд
Что за буква "u" у тебя в запросе?

Добавлено через 1 минуту
попробуй сначала вставить данные без подстановки
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
08.01.2014, 22:05  [ТС]
Цитата Сообщение от animator404 Посмотреть сообщение
Что за буква "u" у тебя в запросе?
извините но Вы читали с начала? я про "u" написал...

Цитата Сообщение от animator404 Посмотреть сообщение
попробуй сначала вставить данные без подстановки
в смысле на прямую?
типа
Java
1
stmt = conn.prepareStatement("insert into u values (S_U.nextval" + ",'" + nik + "','" + pass+"';");
?

если да, то вот такой Exception ------> java.sql.SQLSyntaxErrorException: ORA-00911: неверный символ
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
08.01.2014, 22:08
Цитата Сообщение от asus Посмотреть сообщение
stmt = conn.prepareStatement("insert into u values (S_U.nextval" + ",'" + nik + "','" + pass+"';");
почти
SQL
1
stmt = conn.prepareStatement("insert into u values ("value1","value2","value3");
0
 Аватар для verylazy
462 / 462 / 71
Регистрация: 26.02.2013
Сообщений: 1,263
08.01.2014, 22:19
а шаблон для параметров так можно задавать?
(s_u.nextval,?1,?2)
я про 1 и 2 после знаков вопроса
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
08.01.2014, 22:26  [ТС]
Цитата Сообщение от animator404 Посмотреть сообщение
почти
та же ошибка...
java.sql.SQLSyntaxErrorException: ORA-00911: неверный символ
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
08.01.2014, 22:33
asus, так это теперь будет не препаред стейтмент!!!
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
09.01.2014, 06:16  [ТС]
все заработала
только надо была убрать ";" в конце запроса

P.S. для получения таблицы т.е. для запроса [SRC PLSQL]select * from u[/SRC]
что должен сделать или должен использовать?
вектор или списку или без них можно как нибудь?
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
09.01.2014, 09:12
asus, ResultSet наверное
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
11.01.2014, 20:26  [ТС]
Цитата Сообщение от animator404 Посмотреть сообщение
ResultSet наверное
да уже сделал спасибо

Добавлено через 3 минуты
ещё одна просьба если можно
можете проверит мой код с точки зрения стиля программирования на языке JAVA, я только начинаю изучить этот язык и мне хотелось бы из начала я правильно программировал

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
package qwerty.qwe;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import java.sql.Connection;
 
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
 
import java.sql.Statement;
 
import javax.naming.Context;
 
import javax.naming.InitialContext;
 
import javax.servlet.*;
import javax.servlet.http.*;
 
public class Regist extends HttpServlet {
    private static final String CONTENT_TYPE = "text/html; charset=UTF-8";
 
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }
 
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String nik = "";
        String pass = "";
        try {
            nik = request.getParameter("nik");
            pass = request.getParameter("pass");
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        response.setContentType(CONTENT_TYPE);
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>S1</title></head>");
        out.println("<body>");
 
        int i = 0;
        Connection conn = null;
        Context ctx = null;
        ResultSet rs = null;
        PreparedStatement stmt = null;
        PreparedStatement st = null;
        String sql1 = "select count (*) as kolvo from u where nik = ?";
        String sql2 = "insert into u values (s_u.nextval,?,?)";
        try {
            ctx = new InitialContext();
            conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1522:orcl", "test", "test");
        
//определяем количество записи
            st = conn.prepareStatement(sql1);
            st.setString(1, request.getParameter("nik"));
            rs = st.executeQuery();
            while (rs.next()) {
                i = rs.getInt("kolvo");
            }
     
//если запрос возвратил не 0, то пользователь с таким ником существует и сервлет перенаправляет на страницу reg.jsp
//иначе вводиться новые данные в БД
            if (i != 0) {
                out.println("<br/> выберите другой ник ... ");
                request.getRequestDispatcher("reg.jsp").forward(request, response);
            } else {
                stmt = conn.prepareStatement(sql2); //"insert into u values (q" + ",'" + nik + "','" + pass+"';");
                stmt.setString(1, request.getParameter("nik"));
                stmt.setString(2, request.getParameter("pass"));
                
                stmt.executeUpdate();
                conn.commit();
                out.println("<br/>Все отлично");
            }
 
 
        } catch (Exception e) {
            // TODO: Add catch code
            out.println("<br/>-----------" + e);
        } finally {
            try {
                rs.close();
            } catch (Exception e) {
                // TODO: Add catch code
                e.printStackTrace();
            }
            try {
                ctx.close();
            } catch (Exception e) {
                // TODO: Add catch code
                e.printStackTrace();
            }
            try {
                stmt.close();
            } catch (Exception e) {
                // TODO: Add catch code
                e.printStackTrace();
            }
            try {
                conn.close();
            } catch (Exception e) {
                // TODO: Add catch code
                e.printStackTrace();
            }
        }
 
        out.println("</body></html>");
        out.close();
    }
}
и возможно есть альтернативные варианты и более легкие...
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
11.01.2014, 21:56
asus, вообще я в этом деле тоже новичок.
Зачем Вам понадобились классы
javax.naming.Context;
javax.naming.InitialContext;

Вот:
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
package qwerty.qwe;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class Regist extends HttpServlet {
 
    private static final String CONTENT_TYPE = "text/html; charset=UTF-8";
 
    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }
 
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String nik = null;
        String pass = null;
        try {
            nik = request.getParameter("nik");
            pass = request.getParameter("pass");
        } catch (Exception e) {
            Logger.getLogger(Regist.class.getName()).log(Level.SEVERE, null, e);
        }
 
        response.setContentType(CONTENT_TYPE);
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>S1</title></head>");
        out.println("<body>");
        Connection conn = null;
        ResultSet rs = null;
        PreparedStatement stmt = null;
        String sql = "insert into u (id,nik,pass) values (s_u.nextval,?1,?2);";
        try {
            conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1522:orcl", "test", "test");
            stmt = conn.prepareStatement(sql);
            stmt.setString(1, request.getParameter("nik"));
            stmt.setString(2, request.getParameter("pass"));
            stmt.executeUpdate();
        } catch (SQLException e) {
            // TODO: Add catch code
            out.println("<br/>-----------" + e);
        } finally {
            try {
                rs.close();
                stmt.close();
                conn.close();
            } catch (SQLException ex) {
                Logger.getLogger(Regist.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        out.println("</body></html>");
        out.close();
    }
}
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
12.01.2014, 07:58  [ТС]
Цитата Сообщение от animator404 Посмотреть сообщение
Зачем Вам понадобились классы
javax.naming.Context;
javax.naming.InitialContext;
да они вообще не нужны в моем случае, просто забыл убрать их
P.S. вроде в конечный код по другому была? или не так? там два sql запроса...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.01.2014, 07:58
Помогаю со студенческими работами здесь

Запрос INSERT INTO как построить запрос правильно?
Народ помогите пожалуйста сделать запрос правильно. Имеется таблица users в ней имеется данные для регистрации и данные для профиля. ...

запрос Insert
Здравствуйте! Пытаюсь в таблицу добавить строку, он ругается на пустое значение вроде все столбцы прописала. базу прилагаю..там...

Запрос INSERT
Здравствуйте! У меня возникла проблема с SQL-запросами. Следующим образом я отправляю значения в таблицу: Connection conn =...

Insert запрос
Схема данных на рисунке(пытаюсь научится писать приложения для работы с БД). Что на втором рисунке значит параметр &quot;int? Код_1&quot;....

Запрос Insert
В таблице servers есть поля id, name(varchar), cost(int), date(date). Мне нужно вставить значения из dbedit'ов на форме. Помогите...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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 - 2025, CyberForum.ru