2015-04-27 5 views
1

В java, я пытаюсь удалить последнюю строку моей базы данных. База данных имеет 15 строк, и я хочу удалить 15-й. Столбцы называются Initials и Score.
Удаление последней строки в таблице. SQL/Netbeans

    Intials   Scores 
    rows# 1.   ADS   2343 
     2.   DDE   5454  
     15.   TBK   332 

Я не могу его выбрать TBK потому что я хотел его, чтобы удалить 15 один, независимо от того, что это такое, так что новый может быть добавлен. Везде, где я смотрел, это всегда должно быть конкретным или удалять все строки. Может ли кто-нибудь помочь? Большое спасибо тем, кто помогает. :)

+1

как вы решаете, в какой строке вы хотите удалить? – mucio

+0

15-й означает заказ. В какой колонке вы заказываете свои строки, когда говорите 15? – FuzzyTree

+0

Есть 2 колонки: Intials и оценка. Есть 15 строк. у каждого из которых есть инициалы и оценка, я хочу удалить последнюю, не имея необходимости выбирать ее в любом месте. Это пример того, чего я НЕ хочу: УДАЛИТЬ ОТ HiScores WHERE Intials = 'TBK' AND Score = '332'; – Zetaro666

ответ

0

OP: Я пытаюсь удалить последнюю строку моей базы данных.

  • делает ResultSet обновляемый: ResultSet.CONCUR_UPDATABLE);
  • устанавливает курсор на последнюю запись: resultSet.last();
  • удалить последнюю запись: resultSet.deleteRow();
  • для дальнейшего использования rs вы должны установить: resultSet.beforeFirst();

private static int delLastRow(ResultSet resultSet) { 
    if (resultSet == null) { 
     return 0; 
    } 
    try { 
     resultSet.last(); 
     int delID = resultSet.getInt(1); 
     resultSet.deleteRow(); 
     System.out.println("Deleted id :" + delID); 
     resultSet.beforeFirst(); 
     return delID; 
    } catch (SQLException exp) { 
     exp.printStackTrace(); 
    } finally { 
     try { 
      resultSet.beforeFirst(); 
     } catch (SQLException exp) { 
      exp.printStackTrace(); 
     } 
    } 
    return 0; 
} 

    public static void main(String[] args) { 
    Connection conn = null; 
    Statement stmt = null; 
    try{ 
     Class.forName("com.mysql.jdbc.Driver"); 
     conn = DriverManager.getConnection(DB_URL,USER,PASS); 
     stmt = conn.createStatement(
       ResultSet.TYPE_SCROLL_SENSITIVE, 
       ResultSet.CONCUR_UPDATABLE); 
     //rs will be scrollable, will not show changes made by others, 
     //and will be updatable 

     String sql; 
     sql = "SELECT * FROM `order details`"; 
     ResultSet rs = stmt.executeQuery(sql); 
     System.out.println("Deleted id :"+ delLastRow(rs)); 
     .... 
    } 

enter image description here

+0

Спасибо, @ moskito-x, Стив и Минь. теперь я работаю. :) – Zetaro666

1

Предполагая, что идентификатор столбца идентификации

DELETE FROM table 
WHERE id = (SELECT MAX(id) FROM table) 
+0

Ему не нужно удалять столбец, просто строку, поэтому это будет просто «УДАЛИТЬ ОТ ...» –

+0

Код работает, но также не работает. Я пытаюсь удалить 15-й, написать в базу данных (я еще этого не сделал, поэтому я попаду в этот sped bump, когда я доберусь до него), а затем прочитайте базу данных. когда я поставил ResultSet rs = stmt.executeQuery (SQL); stmt.execute (deleteTableSQL) ;, он покажет базу данных, но удалит случайную, а не 15-ю. но если я поместил его назад, он удалит 15-й, но он не покажет базу данных. – Zetaro666

Смежные вопросы