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

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

08.01.2014, 21:21. Показов 1786. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru