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ąć?
[java] Jak sprawdzić ostatni insert do tabeli MySQL?
-
- 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?
Ostatnio zmieniony 09 lut 2012, 17:32 przez tommmmmm, łącznie zmieniany 1 raz.
- 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?
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.
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.
-
- 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?
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ł.
Nie to nie jest czytelne. Wcale a wcale.
Ale to już jak na dłoni ->
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ń...
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);
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());
}
}
}
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 0 gości