Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Alfa Romeo Stelvio 2.2 jtd

Intrebari srl nou

La multi ani @AndReW99!

Alegere masina £15000 uk
 TVR vrea sa lanseze o platforma d...

Strategie investie pe termen lung...

Modulator FM ptr auto alimentat p...

orange cablu f.o. - internet fara...
 Robinet care comuta traseul

A fost lansata Fedora 40

Samsung S24 plus

Imi iau un Dell? (Vostro vs others)
 Abonati Qobuz?

transport -tren

Platforma electronica de eviden&#...

Cot cu talpa montat stramb in per...
 

Functie de update date din tabel

- - - - -
  • Please log in to reply
4 replies to this topic

#1
raduaxel

raduaxel

    Junior Member

  • Grup: Members
  • Posts: 220
  • Înscris: 01.03.2014
Salut.
Lucrez la o aplicatie de gestiune a bazei de date.
Pe scurt: Am facut o baza de date in postgresql si in eclipse o interfata cu windowbuilder cu un tabel care afiseaza toate datele din baza si butoane de update/select/delete etc. Nu imi dau seama insa cum as putea face ca atunci cand introduc sau modific ceva folosind butoanele, sa se actualizeze automat tabelul, fara sa deschid inca o data aplicatia. Am incercat sa scriu o functie de update si sa  o apelez in partea de actiune a fiecarui buton in parte. Nu a mers. Am incercat cu repaint(). Tot n-am reusit. Exista o functie de genul 'getText()' care poate face asta?



Exemplu actiune buton extras din codul sursa:

Adauga.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {

Connection c = null;
Statement stmt = null;
try {
Class.forName("org.postgresql.Driver");
c = DriverManager
.getConnection("jdbc:postgresql://localhost:5432/Servis",
"postgres", "1");
c.setAutoCommit(false);
System.out.println("Se deschide baza de date...");
stmt = c.createStatement();

String sql = "INSERT INTO clienti (id,nume,prenume,telefon,produs,stare_p) "
+ "VALUES ('"+camp_id.getText()+"', '"+camp_nume.getText()+"', '"+camp_prenume.getText()+"', '"+camp_telefon.getText()+"', '"+camp_p.getText()+"' , 'In asteptare' );";

stmt.executeUpdate(sql);

stmt.close();
c.commit();
c.close();
} catch (Exception e) {
System.err.println( e.getClass().getName()+": "+ e.getMessage() );
System.exit(0);
}
System.out.println("A fost inregistrat clientul.");
}



});



#2
sorin147

sorin147

    Senior Member

  • Grup: Senior Members
  • Posts: 6,359
  • Înscris: 11.08.2003
La inceput cum iti apar datele acolo?
Vezi ce metoda apelezi pentru asta si, dupa ce se apasa un buton, mai adu odata datele.
Poti, de asemenea, sa identifici randurile modificate si sa le actualizezi doar in tabelul respectiv, fara a mai interoga inca o data baza si a aduce tot.

Ce ai pus mai sus e un fel de: "Am probleme cu motorul, se aude ceva ciudat. Am pus o poza cu usa." :)

#3
raduaxel

raduaxel

    Junior Member

  • Grup: Members
  • Posts: 220
  • Înscris: 01.03.2014
Connection c = null;
  Statement stmt = null;
  final DefaultTableModel listTableModel = new DefaultTableModel(rowData, columnNames);
  try {
   Class.forName("org.postgresql.Driver");
   c = DriverManager.getConnection("jdbc:postgresql://localhost:5432/Servis", "postgres", "1");
   c.setAutoCommit(false);
   System.out.println("Baza de date deschisa!");
   stmt = c.createStatement();
   ResultSet rs = stmt.executeQuery("SELECT * FROM clienti;");
   while (rs.next()) {
	int id = rs.getInt("id");
	String nume = rs.getString("nume");
	String prenume = rs.getString("prenume");
	String telefon = rs.getString("telefon");
	String produs = rs.getString("produs");
	String stare_p = rs.getString("stare_p");
	listTableModel.addRow(new Object[] { id, nume, prenume, telefon, produs, stare_p });
   }
   rs.close();
   stmt.close();
   c.close();
  } catch (Exception e) {
   System.err.println(e.getClass().getName() + ": " + e.getMessage());
   System.exit(0);
  }
  System.out.println("Operatiune efectuata!");


Partea asta imi afiseaza datele in tabel.
Am incercat sa fac inca un buton avand ca actiune aceeasi parte. Nu se intampla nimic :/ .

#4
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Curat este sa faci o arhitectura in care pui in centru modelul de business, si implementezi observer pattern pentru toate entitatile.

GUI-ul il faci doar un plug-in care se inregistreaza la pornirea aplicatiei ca "interesat de evenimentele emise de domain model", si care va primi update-uri.

Adica pe invers fata de ce faci momentan.

E putin mai mult de lucru la inceput, dar apoi e mult mai lejer.

Iar baza de date e si ea tot un plug-in.

Vezi si RxJava pentru detalii.



Dar tare imi e ca nu vrei sa faci treaba calumea, ci doar sa mazgalesti niste cod acolo.

#5
WinstonMontana

WinstonMontana

    Active Member

  • Grup: Members
  • Posts: 1,913
  • Înscris: 20.02.2018
Initiator, iti trebuie un event de tip timer/counter care la un interval prestabilit (0.5 -> 1 s) sa reciteasca intr-un vector toate valorile curente din textboxuri, si apoi folosesti valorile din vector in de .getText() ala.

Anunturi

Chirurgia cranio-cerebrală minim invazivă Chirurgia cranio-cerebrală minim invazivă

Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne.

Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate