Форум программистов, компьютерный форум, киберфорум
Наши страницы

Java и базы данных

Войти
Регистрация
Восстановить пароль
 
Ghost125
0 / 0 / 0
Регистрация: 04.06.2013
Сообщений: 9
#1

Добавления сложних запросов в таблицу - Java БД

06.06.2013, 01:08. Просмотров 1195. Ответов 8
Метки нет (Все метки)

При выводе просто запроса типу
MySQL
1
SELECT * FROM rahunok
все работает но если закинуть что-то по сложнее например этот
MySQL
1
2
3
4
5
6
7
8
9
10
SELECT rahunok.Rahunok, 
Sum( prybutky.Prybutky ) AS SumP,
Sum( vytraty.vytraty ) AS SumV,
rahunok.Pochatkova_syma, rahunok.Prymitka,
( ( Sum( prybutky.Prybutky ) ) -Sum( vytraty.vytraty ) + rahunok.Pochatkova_syma) AS Balans,
rahunok.Prymitka
FROM rahunok 
INNER JOIN prybutky ON rahunok.Rahunok = prybutky.Rahunok 
INNER JOIN vytraty ON rahunok.Rahunok = vytraty.Rahunok
GROUP BY rahunok.Rahunok
то разу вылетает ошибка
Java
1
2
3
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'JOIN prybutky ON rahunok.Rahunok = prybutky.Rahunok INNER JOIN vytraty ON rahuno' at line 1
java.lang.NullPointerException
java.lang.IllegalArgumentException: Cannot set a null TableModel
хотел бы узнать как это можно обойти

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
 public ResultSet GetDataSet() {
 
        ResultSet rs = null;
        try {
            Statement S = Conn.createStatement();
            rs = S.executeQuery("SELECT * FROM rahunok");
            return rs;
        } catch (Exception ex) {
            System.out.println(ex.fillInStackTrace());
 
        }
        return rs;
    }


Java
1
2
3
4
5
6
7
8
9
10
11
12
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
       DBConnection Z=new DBConnection();
       Z.Conect();
       ResultSet Y = Z.GetDataSet();
       
        try {
             
            jTable1.setModel(DbUtils.resultSetToTableModel(Y));
        } catch (Exception e) {
            System.out.println(e.fillInStackTrace());
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2013, 01:08
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Добавления сложних запросов в таблицу (Java БД):

Отмена добавления данных в таблицу - C++ Builder БД
Здравствуйте, подскажите пожалуйста как мне отменить добавление данных в таблицу? Добавляю данные следующим образом: void __fastcall...

Ошибка добавления столбца в таблицу - MS Access
Создал запрос на базе таблицы "Агенты_и_прокси" Решил добавить в таблицу "Агенты_и_прокси" еще одно значение из таблицы "Агенты_ВК" ...

Форма для добавления записей в таблицу - MS Access
Существует заполненная таблица, что бы было удобней добавлять данные, сделал форму. Но после нажатия на кнопку на добавления записи,вместо...

MySQL Закрыть таблицу на время добавления/редактирования - PHP БД
Есть связанные таблицы (ч/з внешний ключ). Условие такое - при успешном добавлении инфы в основную таблицу, по last id добавляется инфа и в...

Код для добавления в таблицу БД данных - C#
пишу такой код для добавления в таблицу БД данных strSQL = "INSERT INTO Продукция VALUES (" + Convert.ToInt32(textBox1.Text) +...

Класс для добавления записи в таблицу - C++ Builder БД
добрый день. Подскажите пожалуйста как создать собственный класс для добавления записи в таблицу. БД - tool; Таблица - tbl1; Поле -...

8
Gibby
152 / 152 / 5
Регистрация: 16.10.2012
Сообщений: 354
Записей в блоге: 1
06.06.2013, 15:22 #2
Из СУБД этот запрос выполняется?
1
Ghost125
0 / 0 / 0
Регистрация: 04.06.2013
Сообщений: 9
06.06.2013, 15:41  [ТС] #3
Цитата Сообщение от Gibby Посмотреть сообщение
Из СУБД этот запрос выполняется?
да выполняется
0
Gibby
152 / 152 / 5
Регистрация: 16.10.2012
Сообщений: 354
Записей в блоге: 1
06.06.2013, 15:42 #4
Приведите код со "сложным" запросом, в котором вылезает ошибка. Возможно, вы просто неправильно записали запрос в текстовую строку. Пропустили пробел или что-то вроде того.

Попробуйте так:

Java
1
2
String query = <Текст вашего запроса>;
rs = S.executeQuery(query);
Поставьте Breakpoint на второй строке и скопируйте в СУБД точно то, что находится в переменной query.
1
Ghost125
0 / 0 / 0
Регистрация: 04.06.2013
Сообщений: 9
06.06.2013, 16:44  [ТС] #5
Java
1
2
3
4
5
6
7
8
9
10
rs = S.executeQuery("SELECT rahunok.Rahunok,"
                    + "Sum( prybutky.Prybutky ) AS SumP,"
                    + "Sum( vytraty.vytraty ) AS SumV,"
                    + "rahunok.Pochatkova_syma, rahunok.Prymitka,"
                    + "( ( Sum( prybutky.Prybutky ) ) -Sum( vytraty.vytraty ) + rahunok.Pochatkova_syma) AS Balans,"
                    + "rahunok.Prymitka"
                    + "FROM rahunok"
                    + "INNER JOIN prybutky ON rahunok.Rahunok = prybutky.Rahunok "
                    + "INNER JOIN vytraty ON rahunok.Rahunok = vytraty.Rahunok"
                    + "GROUP BY rahunok.Rahunok");
вот собственно и "сложный" запрос
0
Gibby
152 / 152 / 5
Регистрация: 16.10.2012
Сообщений: 354
Записей в блоге: 1
06.06.2013, 17:30 #6
И запрос у вас в итоге получался вот такой:

SELECT rahunok.Rahunok,Sum( prybutky.Prybutky ) AS SumP,Sum( vytraty.vytraty ) AS SumV,rahunok.Pochatkova_syma, rahunok.Prymitka,( ( Sum( prybutky.Prybutky ) ) -Sum( vytraty.vytraty ) + rahunok.Pochatkova_syma) AS Balans,rahunok.PrymitkaFROM rahunokINNER JOIN prybutky ON rahunok.Rahunok = prybutky.Rahunok INNER JOIN vytraty ON rahunok.Rahunok = vytraty.RahunokGROUP BY rahunok.Rahunok

Видите в чем проблема?
1
Ghost125
0 / 0 / 0
Регистрация: 04.06.2013
Сообщений: 9
06.06.2013, 17:38  [ТС] #7
Цитата Сообщение от Gibby Посмотреть сообщение
Видите в чем проблема?
При переносе на новую строку не ставится пробел))))))

Добавлено через 4 минуты
ну осталось только разобраться почему результат суммирования получается у столько раз больше сколько он суммировал записей)))))
0
Gibby
152 / 152 / 5
Регистрация: 16.10.2012
Сообщений: 354
Записей в блоге: 1
06.06.2013, 17:41 #8
При интерпретации программы переносы, которые вы поставили в редакторе, либо удаляются, либо игнорируются (не знаю точно как именно это происходит в Java). Это не разделитель, это вообще ничто. Они только для того, чтобы в редакторе код читать было удобнее.

Добавлено через 2 минуты
rahunok.Pochatkova_syma
rahunok.Prymitka

К этим полям надо либо применить группирущую операцию (MIN, MAX, COUNT, AVG, SUM и т.д.), либо перечислить в инструкции GROUP BY. Иначе запрос не имеет смысла.

Это MySQL такие запросы пропускает? Нормальные СУБД выдали бы ошибку.
1
Ghost125
0 / 0 / 0
Регистрация: 04.06.2013
Сообщений: 9
06.06.2013, 18:10  [ТС] #9
да это MySQL)))
0
06.06.2013, 18:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2013, 18:10
Привет! Вот еще темы с ответами:

Функция добавления значений в таблицу по условию - Delphi БД
Здравствуйте, не знаю как реализовать функцию, которая делает следующее. Если вводится, например, 000011112222, то эта запись добавится...

отловить события добавления записи в таблицу - Delphi БД
Привет всем. имею borland delphi 2006 СУБД mysql 5-1-39 компонент подключения к mysql - ZEOSDBO-6.6.6-stable. задача : Выловить...

Не работает запрос добавления строки в таблицу - C++ Qt
Доброго времени суток... Когда делаю запрос в таблицу так QSqlQuery query; query.exec(&quot;INSERT INTO kod (kodsv,kodg,kodk)&quot; &quot;VALUES...

Несколько запросов в одну таблицу - SQL Server
Есть таблица Читатель, а в ней столбцы ID_читателя, Образование, Ученая степень. Необходимо определить сколько читателей в процентном...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru