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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удалить строку из таблицы, как передать переменную в запрос 
V
    Опции темы
ЛунныйОборотень
Дата 22.5.2009, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Здравствуйте!

Пытаюсь удалить строку из таблицы JTable.

Но почему то никак не удаляется.
Как я не пытался "вписать" в sql запрос на удаление значение переменной, переданной из java.


Код ,в классе отображения таблицы
Код

    private void deleteDetails() throws SQLException
    {  if(jTable2detali!=null)
            {Detali ddd=new Detali();
           
// zdes my berem znachenie iz tekstovogo polia i perevodim ego v Intenteger

           int id=Integer.parseInt(jFormattedTextField_ID.getText());
           
            ddd.setId(id);
            DetaliTableModel model=new DetaliTableModel();
         
     
        ms.deleteDetali(ddd);   // otdaem sobrannyi obekt v fynktsiy insertDetali(detali) v ManagementSystem(ypravliayshaia sistema)
         

/////////////////////////////////////////////////////////////////////////////////////////////////////
// dobavil ege seichas, no vse ravno ne pomogaet
jTable2detali.removeRowSelectionInterval(id, id);
        //  model.fireTableDataChanged();
          model.fireTableRowsDeleted(id, id);
        model.fireTableDataChanged();

 ///////////////////////////////////////////////////////////////////////////////////////////////////////
          JOptionPane.showMessageDialog(this, "deleteDetail");
        }
    }




Код,выполняющий удаление.
ни строка 
Код

//PreparedStatement stmt =(PreparedStatement) con.prepareStatement("DELETE FROM Detali  WHERE id='"+id+"'");


ни 
Код

stmt=(Statement) con.createStatement();
    rs=stmt.executeQuery("DELETE FROM Detali  WHERE ID=3");

не приводят ни к какому изменению в базе данных.
Код

public void deleteDetali(Detali detali) throws SQLException
{int id=detali.getId();
 System.out.println("Delete id= "+id);
    //PreparedStatement stmt =(PreparedStatement) con.prepareStatement("DELETE FROM Detali  WHERE id='"+id+"'");
            //stmt.setInt(1, detali.getId());




    Statement stmt=null;
    ResultSet rs=null;
    stmt=(Statement) con.createStatement();
    rs=stmt.executeQuery("DELETE FROM Detali  WHERE ID=3");
    

     if(rs!=null)
    {
        rs.close();
    }
   

//stmt.setInt(1, detali.getId());


      if(stmt!=null)
    {
        stmt.close();
    }

}




Подскажите пожалуйста ,что я делаю не так.
Как правильно удалять строки из таблицы(если есть пример,было бы здорово!)
PM MAIL   Вверх
v1rtu0z
Дата 23.5.2009, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 21.4.2008
Где: Воронеж

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



хм. а вот если DELETE делать, возвращается ли ResultSet? Для таких запросов есть метод executeUpdate(), который возвращает количество строк, полученных в результате выполнения команды.
PM MAIL ICQ   Вверх
Connie
Дата 23.5.2009, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ЛунныйОборотень, 
Цитата
Пытаюсь удалить строку из таблицы JTable.
JTable лишь отображает данные, которые находятся в модели, следовательно, что бы что то удалить на "экране", нужно удалять это из модели

Код

DetaliTableModel model=new DetaliTableModel();
Так делать не надо, это создаст еще один экземпляр модели, а нужно работать с тем же, с каким работает JTable

Код

(DetaliTableModel)jTable2detali.getModel()

И уже в этой модели определить свой метод для удаления нужной строки

Код

//Метод в описании модели
public void deleteDetali(Detali detali){
...
fireTableDataChanged();
}


Тогда удаление будет происходить вот так:
Код

Detali ddd=new Detali();
// zdes my berem znachenie iz tekstovogo polia i perevodim ego v Intenteger
int id=Integer.parseInt(jFormattedTextField_ID.getText());
ddd.setId(id);
((DetaliTableModel)jTable2detali.getModel()).deleteDetail(ddd);


Это сообщение отредактировал(а) Connie - 23.5.2009, 09:30
PM MAIL WWW   Вверх
ЛунныйОборотень
Дата 23.5.2009, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



v1rtu0z, если честно,рассматривал Ваше предложение по рещению таких проблем последним-  пробовал выполнить все строчки,которые написал 
уважаемый Connie.
Спасибо!все заработало после добавления stmt.executeUpdate();
 
Connie, спасибо и Вам - подчистил код + все заработало кроме последней строчки --
Код

((DetaliTableModel)jTable2detali.getModel()).deleteDetail(ddd);

NetBeans не позволяет его вызвать.


Тема благополучно закрыта!
PM MAIL   Вверх
Connie
Дата 23.5.2009, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ЛунныйОборотень, 
Код

 ((MenuTableModel)menuList.getModel()).deleteProduct(
             ((MenuTableModel)menuList.getModel()).getProduct(menuList.getSelectedRow()));

У меня NetBeans наверное какой то особый ;-)

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

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

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


 




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


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

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