Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Java + PostgreSQL ошибка, чтение, добавление, изменение, удаление 
V
    Опции темы
Desperate
Дата 4.9.2010, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 11.10.2006

Репутация: нет
Всего: -1



Добрый день! Взялся за изучение работы с PostgreSQL в Java (Eclipse Java EE).

Нарыл здесь код добавления записи в таблицу такой:
Код

package sql_project;

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;

public class sql_project {

    /**
     * @param args
     */
    public static void main(String[] args)
    throws SQLException, ClassNotFoundException{
        Class.forName("org.postgresql.Driver");
        Connection cel= null;
        cel = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres","postgres","123");
        Statement sel = null;
        sel = cel.createStatement();
        ResultSet rsl = null;
        rsl = sel.executeQuery ("INSERT INTO testtable (familiya, name) VALUES ('Петров', 'Иван')");
        cel.close();
        sel.close();
        rsl.close();
        System.out.println("DONE2");
        } 
 }



Таблица два текстовых поля. Запись добавляется. Через pgAdmin вижу. Но вот ошибка вылетает:  Exception in thread "main" org.postgresql.util.PSQLException: Запрос не вернул результатов.
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:253)
    at sql_project.sql_project.main(sql_project.java:35)

советовали executeQuery заменить на executeUpdate но такая ошибка возникает "Type mismatch: cannot convert from int to ResultSet"

В чем дело?

И второе: как эти данные прочесть в переменные текстовые?

Спасибо! smile



PM MAIL   Вверх
Desperate
Дата 4.9.2010, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 11.10.2006

Репутация: нет
Всего: -1



С ошибкой разобрался, если кому интересно будет то код такой:

Код

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;

public class sql_project {

    /**
     * @param args
     */
    public static void main(String[] args)
    throws SQLException, ClassNotFoundException{
        Class.forName("org.postgresql.Driver");
        Connection ce= null;
        ce = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres","postgres","123");
        Statement se = null;
        se = ce.createStatement();
        se.execute("DELETE FROM testtable WHERE familiya = 'Иванов' AND name = 'Вася'");
        /**se.execute("UPDATE testtable SET familiya = 'Иванов',  name = 'Вася' WHERE familiya = 'Петров'");**/
        /**se.execute("INSERT INTO testtable (familiya, name) VALUES ('Петров', 'Вася')");**/
        ce.close();
        se.close();
        System.out.println("DONE");

        } 
}



Но вопрос как данные прочитать в переменну остался? :(
PM MAIL   Вверх
Desperate
Дата 5.9.2010, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 11.10.2006

Репутация: нет
Всего: -1



Ну кто нибудь отзовитесь  smile 
PM MAIL   Вверх
drG100k
Дата 6.9.2010, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 31.3.2006

Репутация: нет
Всего: нет



данные в переменную?

ну если я правильно понял вопрос, то
Код

Connection c ...
Statement s = c.createStatement();
ResultSet rs = s.executeQuery("Select familiya,name from testtable");

while(rs.next()){
System.out.println("Фамилия: "+rs.getString(1)+"\t"+"Имя: "+rs.getString(2));
}
...



PM MAIL   Вверх
Desperate
Дата 7.9.2010, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 11.10.2006

Репутация: нет
Всего: -1



Спасибо дружище smile Как раз то что нужно smile
PM MAIL   Вверх
Skipy
Дата 7.9.2010, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

Репутация: 2
Всего: 16



Цитата(Desperate @ 7.9.2010,  08:42)
Спасибо дружище smile Как раз то что нужно smile

А потом Вы поменяете порядок полей - и Ваш код накроется. А потом Вам понадобится формировать запросы динамически, Вы начнете соединять строки - и наступите на SQL injection.

В общем, во-первых, я Вам советую вместо Statement использовать PreparedStatement, во-вторых, доступ к полям в результате не по индексу, а по имени. Это надежнее.


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
drG100k
Дата 10.9.2010, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 31.3.2006

Репутация: нет
Всего: нет



Цитата(Skipy @ 7.9.2010,  09:23)

А потом Вы поменяете порядок полей - и Ваш код накроется. А потом Вам понадобится формировать запросы динамически, Вы начнете соединять строки - и наступите на SQL injection.

В общем, во-первых, я Вам советую вместо Statement использовать PreparedStatement, во-вторых, доступ к полям в результате не по индексу, а по имени. Это надежнее.

Человеку нужна была "точка отсчёта".
Просто "rs.getString(1)".length() < "rs.getString(\"familiya\")".length()
понимаете о чём я?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0437 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.