[java] Jak sprawdzić ostatni insert do tabeli MySQL?

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
tommmmmm
Sędziwy Jeż
Sędziwy Jeż
Posty: 45
Rejestracja: 04 paź 2008, 11:20
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: Xfce
Architektura: x86_64
Kontakt:

[java] Jak sprawdzić ostatni insert do tabeli MySQL?

Post autor: tommmmmm »

WItam,

Jest problem następującej treści:
Jest sobie Master/Detail Sample Form (ach kochany Netbeans), który działa. Yeah. No i on insertuje do tabeli. Bezbłędnie. Problem pojawia się, gdy chce uzyskać co było tak na prawdę insertowane.
Jest kolumna w tabeli która jest auto_increment (i przy okazji ID) więc chciałbym się dowiedzieć co to za id. Wygooglałem funkcję select insert_lastID() ale ona nie działa. Nie działa, bo gdy connection jest closed to value się traci - tyle że w Master/Detail Sample Form nie ma typowej struktury tak jak np w http://www.devdaily.com/java/edu/JDBC-S ... mple.shtml

No i generalnie ponieważ Netbeansowy kod jest totalnie czarną magią i obscure to nie wiem jak się zabrać do tego. Jak zdobyć to ID ? Mógłbym na pałe zrobić select MAX(ID) ale to jest nieeleganckie no i nie zawsze największe ID będzie ostatnim (bo np. jak był delete i była dziura i teraz tą dziurę się zapełnia to ostatnie id wcale nie jest największe)

Jak z tego wybrnąć?
Ostatnio zmieniony 09 lut 2012, 17:32 przez tommmmmm, łącznie zmieniany 1 raz.
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: [java] Jak sprawdzić ostatni insert do tabeli MySQL?

Post autor: ethanak »

Od kiedy to auto_increment zapycha dziury?
Poza tym jeśli masz tego typu problem, to znaczy że aplikacja jest do kwiatka hortensja.

BTW zdecyduj się, albo column, albo kolumna. Słowo "columna" nie istnieje.
tommmmmm
Sędziwy Jeż
Sędziwy Jeż
Posty: 45
Rejestracja: 04 paź 2008, 11:20
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: Xfce
Architektura: x86_64
Kontakt:

Re: [java] Jak sprawdzić ostatni insert do tabeli MySQL?

Post autor: tommmmmm »

k, jest kolumna. Ach Ci puryści......

kwiatka hortensja?

ps: jakby kod był normalny (np taki jak przedstawiłem w linku) to już dawno bym sobie poradził.

Kod: Zaznacz cały

        entityManager = java.beans.Beans.isDesignTime() ? null : javax.persistence.Persistence.createEntityManagerFactory("UCNGPU").createEntityManager();
        query = java.beans.Beans.isDesignTime() ? null : entityManager.createQuery("SELECT r FROM ResourceClassification r");
        list = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : org.jdesktop.observablecollections.ObservableCollections.observableList(query.getResultList());
       org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, list, masterTable);
        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${id}"));
 org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.id}"), idField, org.jdesktop.beansbinding.BeanProperty.create("text"));
        binding.setSourceUnreadableValue(null);
        bindingGroup.addBinding(binding);
Nie to nie jest czytelne. Wcale a wcale.

Ale to już jak na dłoni ->

Kod: Zaznacz cały

import java.sql.*;

public class BasicJDBCDemo
{
  Connection conn;

  public static void main(String[] args)
  {
    new BasicJDBCDemo();
  }
 
  public BasicJDBCDemo()
  {
    try
    {
      Class.forName("com.mysql.jdbc.Driver").newInstance();
      String url = "jdbc:mysql://localhost/coffeebreak";
      conn = DriverManager.getConnection(url, "username", "password");
      doTests();
      conn.close();
    }
    catch (ClassNotFoundException ex) {System.err.println(ex.getMessage());}
    catch (IllegalAccessException ex) {System.err.println(ex.getMessage());}
    catch (InstantiationException ex) {System.err.println(ex.getMessage());}
    catch (SQLException ex)           {System.err.println(ex.getMessage());}
  }

  private void doTests()
  {
    doSelectTest();

    doInsertTest();  doSelectTest();
    doUpdateTest();  doSelectTest();
    doDeleteTest();  doSelectTest();
  }

  private void doSelectTest()
  {
    System.out.println("[OUTPUT FROM SELECT]");
    String query = "SELECT COF_NAME, PRICE FROM COFFEES";
    try
    {
      Statement st = conn.createStatement();
      ResultSet rs = st.executeQuery(query);
      while (rs.next())
      {
        String s = rs.getString("COF_NAME");
        float n = rs.getFloat("PRICE");
        System.out.println(s + "   " + n);
      }
    }
    catch (SQLException ex)
    {
      System.err.println(ex.getMessage());
    }
  }

  private void doInsertTest()
  {
    System.out.print("\n[Performing INSERT] ... ");
    try
    {
      Statement st = conn.createStatement();
      st.executeUpdate("INSERT INTO COFFEES " +
                       "VALUES ('BREAKFAST BLEND', 200, 7.99, 0, 0)");
    }
    catch (SQLException ex)
    {
      System.err.println(ex.getMessage());
    }
  }

  private void doUpdateTest()
  {
    System.out.print("\n[Performing UPDATE] ... ");
    try
    {
      Statement st = conn.createStatement();
      st.executeUpdate("UPDATE COFFEES SET PRICE=4.99 WHERE COF_NAME='BREAKFAST BLEND'");
    }
    catch (SQLException ex)
    {
      System.err.println(ex.getMessage());
    }
  }

  private void doDeleteTest()
  {
    System.out.print("\n[Performing DELETE] ... ");
    try
    {
      Statement st = conn.createStatement();
      st.executeUpdate("DELETE FROM COFFEES WHERE COF_NAME='BREAKFAST BLEND'");
    }
    catch (SQLException ex)
    {
      System.err.println(ex.getMessage());
    }
  }
}
Netbeans po prostu zmyśla sobie jakieś niestworzone rzeczy, tylko po to aby komplikować sytuację i za wszelką cenę unikać prostych i eleganckich rozwiązań...
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości