Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
0 / 0 / 2
Регистрация: 07.06.2015
Сообщений: 151

Многострочные SQL запросы Oracle

07.03.2017, 21:59. Показов 3979. Ответов 13
Метки java (Все метки)

Студворк — интернет-сервис помощи студентам
Требуется после ввода имени пользователя с клавиатуры, записать его в уникальное поле таблицы GAMEUSERS, а в поле USER_ID счетчик присваивает порядковый номер. Допустим я делаю такой запрос в своем методе, но следом мне необходимо использовать только что созданный USER_ID в качестве имени для новой таблицы(например USER_ID равен 5), запрос на создание которой должен идти следом. Но во первых не понятно как выполнить многострочный sql запрос в java, а во вторых не понятно как взять значение поля USER_ID и добавить к ему текст 'ID_' и использовать в запросе на создание новой таблицы.
Java
1
CREATE TABLE 'ID_' +(SELECT USER_ID FROM GAMEUSERS WHERE username =  '" Name "') (field NUMBER(10));
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.03.2017, 21:59
Ответы с готовыми решениями:

Sql запросы
public class TrainGateway { private final static String TABLE_NAME = "Train"; private final static String ID = "id"; ...

Где хранить sql запросы
Здравствуйте. Пишу http апи, через GET передаются переменные, в зависимости от которых в запросе меняются fields (т.е. SELECT $fields FROM...

Как создать SQL-запросы с параметрами в Hibernate
Здравствуйте! Подскажите пожалуйста как правильно в Hibernate прописать SQL-запрос с параметрами. Без параметров я нашёл можно с...

13
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
08.03.2017, 00:29
Цитата Сообщение от Tim_van_Leyden Посмотреть сообщение
олько что созданный USER_ID в качестве имени для новой таблицы
какой-то неправильный подход
0
0 / 0 / 2
Регистрация: 07.06.2015
Сообщений: 151
08.03.2017, 00:38  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
какой-то неправильный подход
согласен, не очень удобный
но как иначе можно реализовать связь "один ко многим", если у меня регистрируется каждый игрок, а на каждого игрока я должен регистрировать каждую сыгранную им игру и ее результат, а возвращать в поля программы среднее значение по проведенным играм? я пока сообразил только, что при регистрации пользователя будет создана таблица для его собственной статистики и в ней будут записываться все результаты
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
08.03.2017, 00:46
В одну таблицу пиши. Читай про where. Если нужно только среднее, можно хранить I'd игрока, сумму очков и количество игр, например.
0
0 / 0 / 2
Регистрация: 07.06.2015
Сообщений: 151
08.03.2017, 01:02  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
Если нужно только среднее, можно хранить I'd игрока, сумму очков и количество игр, например.
Результат каждой игры это не очки, а процент верно угаданных. Соответственно чтобы получить средний процент из множества игр, мне нужно хранить результат каждой игры в процентах и кол-во игр. Потому я и хотел в отдельную таблицу это писать
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
08.03.2017, 01:50
Храни для каждой игры. В любом случае нет никакой необходимости создавать какие-то лишние таблицы.
0
0 / 0 / 2
Регистрация: 07.06.2015
Сообщений: 151
08.03.2017, 11:11  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
Храни для каждой игры
получается в одной таблице хранить все результаты игр всех юзеров вперемешку, а при необходимости подсчета среднего значения по играм одного определенного пользователя использовать where?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
08.03.2017, 16:28
да.
0
0 / 0 / 2
Регистрация: 07.06.2015
Сообщений: 151
10.03.2017, 23:15  [ТС]
и все же можете помочь примером как в java писать многострочные sql запросы? например выполнить 3 запроса подряд: создание таблицы, запись в нее данных и затем удаление другой таблицы.
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
11.03.2017, 02:01
Так пишите ваши запросы через точку с запятой и исполняйте.
Всё должно прожеваться.
0
0 / 0 / 2
Регистрация: 07.06.2015
Сообщений: 151
14.03.2017, 09:35  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
Так пишите ваши запросы через точку с запятой и исполняйте.
Сейчас записываю следующим образом:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection = null;
    try {
    connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:GAME", "TESTUSER","password");
    Statement statement = null; 
       try {
        statement = connection.createStatement();
        ResultSet resultSet = null;
        ResultSet resultSet2 = null;
           try {
            String sql = "select * from GAMEUSERS where GAMERNAME = '" + Name + "' "; "CREATE TABLE TABLE2(test NUMBER(10))";
            resultSet = statement.executeQuery(sql);                    
                if (!resultSet.isBeforeFirst()) {           
                System.out.println("Нет в базе!");
                 try {
                    String insertSQL = "INSERT INTO GAMEUSERS (GAMERNAME) VALUES ('" + Name + "')";
                    resultSet2 = statement.executeQuery(insertSQL);
                .........................
Выдает ошибку: "ORA-00933: неверное завершение SQL-предложения".

С одной строчкой запроса все нормально
Java
1
String sql = "select * from GAMEUSERS where GAMERNAME = '" + Name + "' ";
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
14.03.2017, 09:58
Так зачем вы в одной строчке делаете create table и select? 0_o Быссмыслица какая-то.
Select-ы, разумеется должны быть всегда отдельно запускаться.
0
0 / 0 / 2
Регистрация: 07.06.2015
Сообщений: 151
14.03.2017, 11:03  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
Select-ы, разумеется должны быть всегда отдельно запускаться.
Хорошо, пробую с двумя инсертами
Java
1
String insertSQL = "INSERT INTO GAMEUSERS (GAMERNAME) VALUES ('" + Name + "'); INSERT INTO STATISTIKA (GAMERNAME) VALUES ('" + Name + "') ";
Не пишет...
Эти поля двух таблиц связаны, хотелось бы конечно чтобы при добавлении записи в основную таблицу, получать имена сразу и во вторую. В своем вышеприведенном примере я просто пытаюсь записывать это через инсерт в каждую таблицу.
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
14.03.2017, 11:42
Цитата Сообщение от Tim_van_Leyden Посмотреть сообщение
Не пишет...
Опять та же ошибка? Или что происходит?
Попробуйте в анонимный блок засунуть. Так точно должно работать.
Java
1
2
3
4
5
String insertSQL = "BEGIN" +
    "   INSERT INTO GAMEUSERS (GAMERNAME) VALUES ('" + Name + "');" +
    "   INSERT INTO STATISTIKA (GAMERNAME) VALUES ('" + Name + "');" +
    "END;"
;
Добавлено через 42 секунды
PS. Для передачи значений нужно использовать PreparedStatement. Использовать конкатенацию - это очень плохо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.03.2017, 11:42
Помогаю со студенческими работами здесь

Как запустить хранимые процедуры(pl/sql oracle) из java
Всем привет!!! Как запустить хранимые процедуры(pl/sql oracle) из java сервлетом заранее спасибо!!!

Oracle sql запросы
Тестовое задание на знание SQL Здравствуйте, прошу написать 5 SQL запросов по следующим пунктам: 1. Выбрать все документы, где...

Перевести запросы SQL в запросы средствами реляционной алгебры
Ребята помогите, пожалуйста, перевести запросы SQL в язык реляционной алгебры. Курсак с утра сдавать, а я не понимаю как написать. ...

Запросы Oracle
Привет! Только начинаю осваиваться в оракле и то, только для сдачи курсача :) Создал таблицы, схему. Появились вопросы: 1. Почему-то не...

SQL Запросы. MS SQL. 3. Приложения, которые работают со всеми серверами БД
Всем доброго времени суток! Есть задача: Приложения, которые работают со всеми серверами БД. Есть отношения: R3: ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru