Sunteți pe pagina 1din 97

Aplicaii cu baze de date n JBuilder

CAPITOLUL 2 Aplicaii cu baze de date n JBuilder


n Java, tehnologia de conectare la bazele de date este JDBC (Java DataBase Conectivity), o interfa standard SQL care ne permite lucrul cu diferite baze de date relaionale. JDBC reprezint API-ul (Application Programming Interface) ce ofer aplicaiilor Java acces spre diferite baze de date. nainte de a se utiliza biblioteca de clase JDBC, trebuie configurat driverul corespunztor bazelor de date relaionale utilizate, acesta constituind legtura dintre aplicaie i baza de date. Clasele bibliotecii JDBC sunt dependente de managerul de drivere, care ne permite s cunoatem care drivere sunt necesare pentru a avea acces la nregistrrile unei baze de date. Fiecare format de baze de date utilizat n program necesit un driver diferit. Driverele de baze de date JDBC sunt scrise complet n Java. Un driver corespunde unei biblioteci *.jar, iar clasa de conexiune la baza de date poart, n general, numele de Driver. Biblioteca de clase JDBC permite: stabilirea unei conexiuni la o baz de date, n raport cu driverul ales; executarea unei comenzi SQL asupra bazei de date; vizualizarea nregistrrilor rezultate n urma execuiei comenzii SQL. 2.1 Utilizarea bazelor de date MySql 2.1.1 Configurarea unui driver n JBuilder n meniul Tools se alege opiunea Configures Libraries i n fereastra Configures Libraries (Figura 2.1) se va aduga o nou bibliotec.

Figura 2.1 - Configurarea unui driver Pentru a fi integrat implicit o bibliotec ntr-un proiect, n meniul Project, se va
25

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

selecta comanda Default Project Properties, iar n foaia cu eticheta Required Libraries din fereastra Default Project Properties (Figura 2.2) se va aduga biblioteca.

Figura 2.2 - Biblioteci implicite ntr-un proiect 2.1.2 Componente pentru lucrul cu baze de date Pe lng tehnologia JDBC inerent n Java, pentru accesul la informaiile dintr-o baz de date i manipularea acestora, n JBuilder sunt disponibile bibliotecile de componente DataExpress (componente nevizuale - Figurile 2.3 i 2.5) i dbSwing (componente vizuale Figurile 2.4 i 2.5).

Figura 2.3 - DataExpress componente pentru conexiunea la o baz de date i executarea comenzilor SQL

Figura 2.4 - dbSwing componente pentru vizualizarea unor informaii (ce se refer la toate cmpurile dintr-o tabel sau la cte un cmp)

26

Aplicaii cu baze de date n JBuilder

Acestea sunt componentele utilizate cel mai des n lucrul cu bazele de date. Alte componente se gsesc pe paletele dbSwing Models (componente nevizuale) i More dbSwing (componente vizuale).

Figura 2.5 - Componente DataExpress i dbSwing (sursa:http://emmanuelemy.developpez.com/Java/Tutoriels/BaseDonnees/PrincipeBase/PrincipeBase.htm)

Figura 2.6 - Proprietatea Connection, componenta DataBase

27

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

Arhitectura DataExpress din JBuilder este centrat pe dezvoltarea aplicaiilor, appleturilor, servleturilor i JSP (Java Server Pages). Componenta DataBase este necesar pentru accesul la datele stocate ntr-un server la distan i administreaz conexiunea JDBC cu baza de date. Proprietatea cea mai important a acestei componente este proprietatea connection (a se vedea Figura 2.6). La aceast proprietate se precizeaz baza de date cu care se face conexiunea i driverul selecionat pentru managerul de drivere JDBC.

Figura 2.7 - Proprietatea Query, componenta QueryDataSet Componenta QueryDataSet stocheaz rezultatul unei comenzi SQL executat pe un server la distan. Pentru conectarea la baza de date, la proprietatea Query se selecteaz o component DataBase i se introduce comanda SQL care se va executa (a se vedea Figura 2.7). Componentele dbSwing sunt vizuale i proprietatea lor cea mai important este DataSet (unde se specific sursa de date, de exemplu o component QueryDataSet). Unele dintre ele se refer la cmpurile dintr-o ntreag tabel (cum ar fi JdbTable sau JdbNavToolBar ) iar altele se refer la cte un cmp dintr-o tabel

(cum ar fi JdbTextField , JdbComboBox etc.); pentru acestea din urm, la proprietatea columnName se va specifica i cmpul de legtur.

28

Aplicaii cu baze de date n JBuilder

2.1.3 Utilizarea comenzilor SQL prin program

Figura 2.8 - Baza de date Utilizarea comenzilor SQL se poate face att n design, cum s-a prezentat anterior, ct i prin program, cum vom prezenta n continuare, astfel: Aplicaia 2.1 Vom considera baza de date bd1 prezentat n Figura 2.8. Conexiunea la baza de date bd1 se face utiliznd componenta database1. Legturile dintre componente sunt prezentate n Figura 2.9.

Figura 2.9 - Vizualizarea i modificarea coninutului tabelelor n JBuilder


29

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

Acionnd asupra butonului de comand jButton1, vor fi vizualizate pe ecran datele existente n tabela tabel2 din baza de date bd1 i acionnd asupra butonului de comand jButton1, vor fi adugate prin program nregistrri n tabela tabel2. Programul surs este urmtorul:
package aplic3; import java.awt.*; import java.awt.event.*; import javax.swing.*; import com.borland.dx.sql.dataset.*; import com.borland.dbswing.*; import com.borland.datastore.*; import com.borland.dx.dataset.*; import java.sql.*; public class Frame1 extends JFrame { JPanel contentPane; Database database1 = new Database(); QueryDataSet queryDataSet1 = new QueryDataSet(); GridBagLayout gridBagLayout1 = new GridBagLayout(); JdbTable jdbTable1 = new JdbTable(); JButton jButton1 = new JButton(); JdbTable jdbTable2 = new JdbTable(); JButton jButton2 = new JButton(); QueryDataSet queryDataSet2 = new QueryDataSet(); //Construct the frame public Frame1() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { contentPane = (JPanel)this.getContentPane(); queryDataSet1.setQuery(new com.borland.dx.sql.dataset.QueryDescriptor( database1, "select * from tabel1", null, true, Load.ALL)); database1.setConnection(new com.borland.dx.sql.dataset.ConnectionDescriptor( "jdbc:mysql://localhost/bd1", "", "", false, "com.mysql.jdbc.Driver")); contentPane.setLayout(gridBagLayout1); this.setSize(new Dimension(400, 300)); this.setTitle("Frame Title"); jdbTable1.setDataSet(queryDataSet1); jButton1.setText("jButton1"); jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this)); jButton2.setText("jButton2");

30

Aplicaii cu baze de date n JBuilder


jButton2.addActionListener(new Frame1_jButton2_actionAdapter(this)); queryDataSet2.setQuery(new com.borland.dx.sql.dataset.QueryDescriptor(database1, "select * from tabel2", null, true, Load.ALL)); jdbTable2.setDataSet(queryDataSet2); contentPane.add(jdbTable1, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 109, 100)); contentPane.add(jButton1, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); contentPane.add(jdbTable2, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); contentPane.add(jButton2, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } }

void jButton1_actionPerformed(ActionEvent e) { try { String dbURL = "jdbc:mysql://localhost/bd1"; String user = ""; String password = ""; // nregistrarea driverului JDBC folosind clasa DriverManager Class.forName("com.mysql.jdbc.Driver"); // realizarea unei conexiuni ctre baza de date Connection c = DriverManager.getConnection(dbURL, user, password); // executarea unei comenzi SQL Statement s = c.createStatement(); ResultSet r = s.executeQuery("select * from tabel2"); // procesarea rezultatelor (afiarea datelor cu System.out.println) while (r.next()) { System.out.println(r.getString("Camp1") + ", " +r.getString("Camp2")); } // nchiderea unei conexiuni la o baz de date r.close(); s.close(); } catch (ClassNotFoundException a) { // Could not find the driver }
31

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

catch (SQLException a) { // Could not connect to the database } } void jButton2_actionPerformed(ActionEvent e) { try { String dbURL = "jdbc:mysql://localhost/bd1"; String user = ""; String password = ""; Class.forName("com.mysql.jdbc.Driver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s = c.createStatement(); // pentru operaii de actualizare sau tergere se folosete metoda executeUpdate s.executeUpdate("Insert into tabel2 values(8,9)"); r.close(); s.close(); // reactualizarea datelor queryDataSet2.refresh(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } } }
class Frame1_jButton1_actionAdapter
implements java.awt.event.ActionListener { Frame1 adaptee; Frame1_jButton1_actionAdapter(Frame1 adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton1_actionPerformed(e); } } class Frame1_queryDataSet2_editAdapter extends com.borland.dx.dataset.EditAdapter { Frame1 adaptee; Frame1_queryDataSet2_editAdapter(Frame1 adaptee) { this.adaptee = adaptee;

32

Aplicaii cu baze de date n JBuilder


} } class Frame1_jButton2_actionAdapter implements java.awt.event.ActionListener { Frame1 adaptee; Frame1_jButton2_actionAdapter(Frame1 adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton2_actionPerformed(e); }

2.2 Utilizarea fiierelor *.txt ca baze de date Pentru a utiliza fiierele *.txt ca baze de date, se vor parcurge urmtoarele etape: se va aduga fiierul *.txt la proiect acionnd butonul Add Files/Packages/Classes. Se adaug o component TextDataFile i la proprietatea fileName se va

selecta fiierul *.txt (cu toat calea); se va utiliza un control TableDataSet , iar la proprietatea dataFile se selecteaz componenta TextDataFile de legtur (Figura 2.10).

Figura 2.10 - Componenta TextDataFile Pentru a vizualiza date din fiier sau pentru a introduce noi valori, se vor folosi componentele vizuale dbSwing. n cazul n care se vor folosi aceste componente (mpreun cu componenta JdbNavToolBar), trebuie fcut observaia c ele nu sunt suficiente pentru introducerea (salvarea) efectiv a datelor n fiier. Pentru aceast operaie, se va aduga, n plus, urmtoarea secven de program: void jButton1_actionPerformed(ActionEvent e) { try { tableDataSet1.getDataFile().save(tableDataSet1); } catch(Exception ex) {ex.printStackTrace();}
33

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

} asociat, de exemplu, evenimentului actionPerformed al unui buton de comand. La fiecare execuie a programului, datele existente anterior n fiier vor fi distruse. n folderul n care se afl fiierul *.txt, va fi creat un fiier cu acelai nume i cu extensia schema. Acest fiier este un fiier text ce conine definiia cmpurilor utilizate i proprietile componentei TextDataFile. n cazul n care se dorete utilizarea unei noi componente TextDataFile se poate aduga la proiect, fiierul cu extensia schema, fr a mai fi necesar reconstruirea coloanelor. 2.3 Utilizarea bazelor de date Microsoft Access ODBC (Object DataBase Connectivity) vizeaz conexiunea la baze de date de tip Microsoft Access, FoxPro, Visual FoxPro, Paradox, dBase, etc. Dinspre platforma Java spre platforma ODBC se poate ajunge utiliznd puntea JDBC:ODBC. Utiliznd cele dou drivere, ODBC i puntea JDBC:ODBC, se realizeaz conexiunea dintre aplicaia Java i baza de date Microsoft Access. Aplicaia 2.2 Pentru exemplificarea lucrului cu baze de date n Java, vom prezenta o aplicaie care se refer la evidena exporturilor de produse ale unei firme. Structura bazei de date este prezentat n Figura 2.11.

Figura 2.11 - Structura bazei de date


34

Aplicaii cu baze de date n JBuilder

Figura 2.12 - Structura bazei de date Se creaz o surs de date n ODBC. Pentru aceasta se execut urmtorii pai: din Control Panel se alege Administrative Tools, Data Sources (ODBC), ceea ce determin apariia ferestrei ODBC Data Source Administrator. n foaia cu eticheta User DNS, folosind butonul Add i scenariul (wizard-ul) pe care acesta l declaneaz, se selecteaz driverul ODBC (n cazul acesta, spre Access), respectiv baza de date asupra careia se face interogarea i se introduce numele acestei surse de date (Data Source Name) aa cum este prezentat n Figura 2.12. Fereastra principal a aplicaiei va conine un meniu. Acest meniu este prezentat, n faza de proiectare, n Figurile 2.13-2.17. Pentru produse, clieni i delegai se vor utiliza metode de introduce i tergere din baza de date. Pe baza comenzilor clienilor, se vor introduce n baza de date, datele corespunztoare contractului. Pentru fiecare contract, aplicaia genereaz documentul n format html. Dup introducerea datelor corespunztoare unei livrri, se vor emite dispoziia de livrare, factura i CMR-ul (Scrisoarea de transport internaional) corespunztoare fiecrui contract (aplicaia prevede cte o unic livrare, n cazul fiecrui contract). Pentru fiecare factur se va ine evidena ncasrilor (pe baza termenului de plat prevzut n contract), difereniindu-se astfel, facturile achitate, cele restante i cele neachitate. Pentru produse, clieni i delegai se pot efectua operaii de nregistrare i tergere a datelor, selectnd opiunile corespunztoare submeniurilor (pentru produse, a se vedea Figura 2.14). Pentru contracte i ncasri se pot efectua operaii de nregistrare i vizualizare a datelor, selectnd opiunile corespunztoare submeniurilor (pentru contracte, a se vedea Figura 2.15)
35

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

Figura 2.13 - Meniul aplicaiei


36

Aplicaii cu baze de date n JBuilder

Figura 2.14 - Submeniul opiunii Produse

Figura 2.15 - Submeniul opiunii Contracte Meniul Documente livrri conine opiunile Dispoziie de livrare, Factur i CMR (Scrisoarea de transport internaional).

Figura 2.16 - Meniul Documente livrri La lansarea aplicaiei n execuie, fereastra principal arat aa cum este prezentat n Figura 2.17. Programul corespunztor ferestrei principale este urmtorul:
package export_de_produse; import java.awt.*; import java.awt.event.*; import javax.swing.*;

37

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

Figura 2.17 - Fereastra principal la lansarea aplicaiei n execuie


import com.borland.jbcl.layout.*; public class fereastra_principala extends JFrame { JPanel contentPane; XYLayout xYLayout1 = new XYLayout(); JMenuBar jMenuBar1 = new JMenuBar(); JMenu jMenu1 = new JMenu(); JMenu jMenu2 = new JMenu(); JMenuItem jMenuItem1 = new JMenuItem(); JMenuItem jMenuItem2 = new JMenuItem(); JMenu jMenu3 = new JMenu(); JMenuItem jMenuItem3 = new JMenuItem(); JMenuItem jMenuItem4 = new JMenuItem(); JMenu jMenu4 = new JMenu(); JMenuItem jMenuItem5 = new JMenuItem(); JMenuItem jMenuItem6 = new JMenuItem(); JMenuItem jMenuItem7 = new JMenuItem(); JMenu jMenu5 = new JMenu(); JMenuItem jMenuItem8 = new JMenuItem(); JMenuItem jMenuItem9 = new JMenuItem(); JMenu jMenu6 = new JMenu(); JMenuItem jMenuItem10 = new JMenuItem(); JMenuItem jMenuItem11 = new JMenuItem(); JMenu jMenu7 = new JMenu(); JMenuItem jMenuItem12 = new JMenuItem(); JMenuItem jMenuItem13 = new JMenuItem();JMenuItem jMenuItem14 = new JMenuItem();

inregistrare_produs f_inregistrare_produs=new inregistrare_produs(); stergere_produs f_stergere_produs=new stergere_produs(); i_contract f_i_contract=new i_contract(); v_contract f_v_contract=new v_contract(); d_livrare f_d_livrare=new d_livrare(); i_incasare f_i_incasare=new i_incasare(); v_incasari f_v_incasari=new v_incasari(); v_dispozitie_de_livrare f_v_dispozitie_de_livrare=new v_dispozitie_de_livrare(); v_factura f_v_factura=new v_factura();
//Construct the frame public fereastra_principala() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } }

38

Aplicaii cu baze de date n JBuilder


//Component initialization private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); contentPane.setLayout(xYLayout1); this.setJMenuBar(jMenuBar1); this.setSize(new Dimension(442, 144)); this.setTitle("Exportul de produse"); jMenu1.setText("Modificari date"); jMenu2.setText("Produse"); jMenuItem1.setText("Inregistrare"); jMenuItem1.addActionListener(new fereastra_principala_jMenuItem1_actionAdapter(this)); jMenuItem2.setText("Stergere"); jMenuItem2.addActionListener(new fereastra_principala_jMenuItem2_actionAdapter(this)); jMenu3.setText("Delegati"); jMenuItem3.setText("Inregistrare"); jMenuItem4.setText("Stergere"); jMenu4.setText("Contracte"); jMenuItem5.setText("Inregistrare"); jMenuItem5.addActionListener(new fereastra_principala_jMenuItem5_actionAdapter(this)); jMenuItem6.setText("Vizualizare date"); jMenuItem6.addActionListener(new fereastra_principala_jMenuItem6_actionAdapter(this)); jMenuItem7.setText("Livrari"); jMenuItem7.addActionListener(new fereastra_principala_jMenuItem7_actionAdapter(this)); jMenu5.setText("Evidenta incasari"); jMenuItem8.setText("Inregistrare incasare"); jMenuItem8.addActionListener(new fereastra_principala_jMenuItem8_actionAdapter(this)); jMenuItem9.setText("Vizualizare date"); jMenuItem9.addActionListener(new fereastra_principala_jMenuItem9_actionAdapter(this)); jMenu6.setText("Documente livrari"); jMenuItem10.setText("Factuta"); jMenuItem11.setText("CMR"); jMenu7.setText("Clienti"); jMenuItem12.setText("Inregistrare"); jMenuItem13.setText("Stergere"); MenuItem14.setText( "Dispozitie de livrare"); jMenuItem14.addActionListener(new fereastra_principala_jMenuItem14_ actionAdapter(this)); jMenuBar1.add(jMenu1); jMenuBar1.add(jMenu6); jMenu1.add(jMenu2); jMenu1.add(jMenu7); jMenu1.add(jMenu3); jMenu1.add(jMenu4); jMenu1.add(jMenuItem7); jMenu1.add(jMenu5); jMenu2.add(jMenuItem1); jMenu2.add(jMenuItem2); jMenu3.add(jMenuItem3); jMenu3.add(jMenuItem4); jMenu4.add(jMenuItem5); jMenu4.add(jMenuItem6); jMenu5.add(jMenuItem8); jMenu5.add(jMenuItem9); jMenu6.add(jMenuItem14); jMenu6.add(jMenuItem10); jMenu6.add(jMenuItem11); jMenu7.add(jMenuItem12); jMenu7.add(jMenuItem13); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } }

//Afiarea ferestrei utilizat pentru introducerea unui produs nou void jMenuItem1_actionPerformed(ActionEvent e) { f_inregistrare_produs.setLocation(300,300); f_inregistrare_produs.show(); } //Afiarea ferestrei utilizat pentru tergerea unui produs existent void jMenuItem2_actionPerformed(ActionEvent e) { f_stergere_produs.setLocation(310,300); f_stergere_produs.show(); } //Afiarea ferestrei utilizat pentru introducerea unui contract nou
39

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

void jMenuItem5_actionPerformed(ActionEvent e) { f_i_contract.setLocation(300,300); f_i_contract.show(); } //Afiarea ferestrei utilizat pentru introducerea unei dispoziii de livrare void jMenuItem7_actionPerformed(ActionEvent e) { f_d_livrare.setLocation(300,300); f_d_livrare.show(); } //Afiarea ferestrei utilizat pentru introducerea unei ncasri void jMenuItem8_actionPerformed(ActionEvent e) { f_i_incasare.setLocation(300,300); f_i_incasare.show(); } //Afiarea ferestrei utilizat pentru vizualizarea evidenei ncasrilor void jMenuItem9_actionPerformed(ActionEvent e) { f_v_incasari.setLocation(300,300); f_v_incasari.show(); } //Afiarea ferestrei utilizat pentru vizualizarea unui contract void jMenuItem6_actionPerformed(ActionEvent e) { f_v_contract.setLocation(300,300); f_v_contract.show(); } //Afiarea ferestrei utilizat pentru vizualizarea unei dispoziii de livrare void jMenuItem14_actionPerformed(ActionEvent e) { f_v_dispozitie_de_livrare.setLocation(300,300); f_v_dispozitie_de_livrare.show(); } //Afiarea ferestrei utilizat pentru vizualizarea unei facturi void jMenuItem10_actionPerformed(ActionEvent e) { f_v_factura.setLocation(300,300); f_v_factura.show(); } }
class fereastra_principala_jMenuItem1_actionAdapter implements java.awt.event.ActionListener { fereastra_principala adaptee; fereastra_principala_jMenuItem1_actionAdapter(fereastra_principala adaptee) {

40

Aplicaii cu baze de date n JBuilder


this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuItem1_actionPerformed(e); } } class fereastra_principala_jMenuItem2_actionAdapter implements java.awt.event.ActionListener { fereastra_principala adaptee; fereastra_principala_jMenuItem2_actionAdapter(fereastra_principala adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuItem2_actionPerformed(e); } } class fereastra_principala_jMenuItem5_actionAdapter implements java.awt.event.ActionListener { fereastra_principala adaptee; fereastra_principala_jMenuItem5_actionAdapter(fereastra_principala adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuItem5_actionPerformed(e); } } class fereastra_principala_jMenuItem7_actionAdapter implements java.awt.event.ActionListener { fereastra_principala adaptee; fereastra_principala_jMenuItem7_actionAdapter(fereastra_principala adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuItem7_actionPerformed(e); } } class fereastra_principala_jMenuItem8_actionAdapter implements java.awt.event.ActionListener { fereastra_principala adaptee; fereastra_principala_jMenuItem8_actionAdapter(fereastra_principala adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuItem8_actionPerformed(e); } } class fereastra_principala_jMenuItem9_actionAdapter implements java.awt.event.ActionListener { fereastra_principala adaptee; fereastra_principala_jMenuItem9_actionAdapter(fereastra_principala adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuItem9_actionPerformed(e); } } class fereastra_principala_jMenuItem6_actionAdapter implements java.awt.event.ActionListener { fereastra_principala adaptee; fereastra_principala_jMenuItem6_actionAdapter(fereastra_principala adaptee) {

41

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder
this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuItem6_actionPerformed(e); } }

class fereastra_principala_jMenuItem14_actionAdapter implements java.awt.event.ActionListener { fereastra_principala adaptee; fereastra_principala_jMenuItem14_actionAdapter(fereastra_principala adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuItem14_actionPerformed(e); } } class fereastra_principala_jMenuItem10_actionAdapter implements java.awt.event.ActionListener { fereastra_principala adaptee; fereastra_principala_jMenuItem10_actionAdapter(fereastra_principala adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuItem10_actionPerformed(e); } }

Pentru nregistrarea i tergerea produselor, se vor utiliza obiecte care vor fi instane ale clasei numit produs. n continuare, este prezentat clasa produs.
package export_de_produse; import com.borland.dx.sql.dataset.*; import java.sql.*;

//clasa produs public class produs { //variabilele membru ale clasei int cod_produs, pret; String denumire_produs, unitate_de_masura; //metoda nregistrare_produs void inregistrare_produs(int cod, String d, String u, int p){
42

Aplicaii cu baze de date n JBuilder

String sql_statement; //commanda SQL ce va fi utilizat sql_statement="Insert into produse values("+cod+",'"+d+"','"+u+"',"+p+")"; try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; // nregistrarea driverului JDBC folosind clasa DriverManager Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // Stabilirea unei conexiuni ctre baza de date Connection c = DriverManager.getConnection(dbURL, user, password); // Execuia comenzii SQL Statement s = c.createStatement(); s.executeUpdate(sql_statement); // nchiderea conexiunii la baza de date s.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } } // metoda citire_produs void citire_produs(){ String sql_statement; sql_statement="select * from Produse where Codpr="+String.valueOf(cod_produs); try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s = c.createStatement(); ResultSet r = s.executeQuery(sql_statement);
43

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

/*variabilelor membre ale clasei li se atribuie valorile din baza de date corespunztoare codului de produs specificat */ while (r.next()) { denumire_produs=r.getString("Denpr"); unitate_de_masura=r.getString("UM"); pret=r.getInt("pret"); } r.close(); s.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } } // metoda tergere_produs void stergere_produs(){ String sql_statement; sql_statement="delete from produse where codpr="+cod_produs; try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s = c.createStatement(); s.executeUpdate(sql_statement); s.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } } } Pentru introducerea unui produs nou n baza de date, se va utiliza fereastra prezentat n Figura 2.18.

44

Aplicaii cu baze de date n JBuilder

Figura 2.18 - Fereastra utilizat pentru introducerea n baza de date a unui produs nou
package export_de_produse;

45

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder
import java.awt.*; import java.awt.event.*; import javax.swing.*; import com.borland.jbcl.layout.*;

/*pentru a putea utiliza instane ale clasei produs, se va importa clasa produs din pachetul export_de_produse */ import export_de_produse.produs;
public class inregistrare_produs extends JFrame { JPanel contentPane; XYLayout xYLayout1 = new XYLayout(); JLabel jLabel1 = new JLabel(); JTextField jTextField1 = new JTextField(); JLabel jLabel2 = new JLabel(); JTextField jTextField2 = new JTextField(); JLabel jLabel3 = new JLabel(); JTextField jTextField3 = new JTextField(); JLabel jLabel4 = new JLabel(); JTextField jTextField4 = new JTextField(); JButton jButton1 = new JButton(); JButton jButton2 = new JButton(); JButton jButton3 = new JButton(); //Construct the frame public inregistrare_produs() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); }

}
//Component initialization private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); jLabel1.setText("Cod produs"); contentPane.setLayout(xYLayout1); this.setSize(new Dimension(508, 247)); this.setTitle("Inregistrare produs"); jTextField1.setText(""); jLabel2.setText("Denumire produs"); jTextField2.setText(""); jLabel3.setText("UM"); jTextField3.setText(""); jLabel4.setText("Pret unitar"); jTextField4.setText(""); jButton1.setText("Inregistrare"); jButton1.addActionListener(new inregistrare_produs_jButton1_actionAdapter(this)); jButton2.setText("Anulare"); jButton2.addActionListener(new inregistrare_produs_jButton2_actionAdapter(this)); jButton3.setText("Revenire"); jButton3.addActionListener(new inregistrare_produs_jButton3_actionAdapter(this)); contentPane.add(jLabel1, new XYConstraints(20, 33, 77, 23)); contentPane.add(jTextField1, new XYConstraints(114, 33, 86, 23)); contentPane.add(jLabel2, new XYConstraints(234, 33, 87, 23)); contentPane.add(jTextField2, new XYConstraints(353, 33, 86, 23)); contentPane.add(jLabel3, new XYConstraints(20, 97, 77, 23)); contentPane.add(jTextField3, new XYConstraints(121, 97, 86, 23)); contentPane.add(jLabel4, new XYConstraints(234, 97, 112, 23)); contentPane.add(jTextField4, new XYConstraints(353, 97, 86, 23)); contentPane.add(jButton1, new XYConstraints(24, 155, 115, 29)); contentPane.add(jButton2, new XYConstraints(170, 155, 115, 29)); contentPane.add(jButton3, new XYConstraints(327, 155, 115, 29));

}
//Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e);

46

Aplicaii cu baze de date n JBuilder


if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } }

// nregistrarea unui produs nou void jButton1_actionPerformed(ActionEvent e) { // crearea unui obiect instan a clasei produs produs p=new produs(); /* apelarea metodei nregistrare_produs (nregistrarea datelor din fereastr n baza de date) */ p.inregistrare_produs(Integer.parseInt(jTextField1.getText()), jTextField2.getText(), jTextField3.getText(),Integer.parseInt(jTextField4.getText())); p=null; /*dup ce datele din fereastr au fost nregistrate n baza de date, se vor terge informaiile din zonele de editare*/ jTextField1.setText(""); jTextField2.setText(""); jTextField3.setText(""); jTextField4.setText(""); } /* pentru tergerea rapid a informaiilor din zonele de editare, n cazul n care acestea au fost tastate greit i nu au fost nc introduse n baza de date, se va utiliza butonul de comand anulare*/ void jButton2_actionPerformed(ActionEvent e) {
jTextField1.setText(""); jTextField2.setText(""); jTextField3.setText(""); jTextField4.setText("");

} /*pentru revenirea la fereastra principal, se terg informaiile din zonele de editare i se ascunde fereastra curent, utiliznd metoda hide()*/ void jButton3_actionPerformed(ActionEvent e) { jTextField1.setText(""); jTextField2.setText(""); jTextField3.setText(""); jTextField4.setText(""); this.hide(); } }
class inregistrare_produs_jButton1_actionAdapter implements java.awt.event.ActionListener { inregistrare_produs adaptee; inregistrare_produs_jButton1_actionAdapter(inregistrare_produs adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton1_actionPerformed(e);

47

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder
} } class inregistrare_produs_jButton2_actionAdapter implements java.awt.event.ActionListener { inregistrare_produs adaptee; inregistrare_produs_jButton2_actionAdapter(inregistrare_produs adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton2_actionPerformed(e); } } class inregistrare_produs_jButton3_actionAdapter implements java.awt.event.ActionListener { inregistrare_produs adaptee; inregistrare_produs_jButton3_actionAdapter(inregistrare_produs adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton3_actionPerformed(e); } }

Pentru tergerea unui produs din baza de date, se va utiliza fereastra prezentat n Figura 2.19. n momentul n care este afiat fereastra, n lista derulant vor fi afiate toate codurile corespunztoare produselor existente n baza de date. Pentru codul selectat din lista derulant, n zonele de editare, vor fi afiate: denumirea produsului, unitatea de msur i preul unitar, aa cum este prezentat n Figura 2.20. n continuare se prezint codul corespunztor acestei ferestre, care este urmtorul:
package export_de_produse; import java.awt.*; import java.awt.event.*; import javax.swing.*; import com.borland.jbcl.layout.*;

//se import clasa produs din pachetul export_de_produse

import export_de_produse.produs; import com.borland.dx.sql.dataset.*; import com.borland.dx.sql.dataset.*; import com.borland.dx.dataset.*; import java.sql.*; import java.lang.*;

48

Aplicaii cu baze de date n JBuilder

Figura 2.19 - Fereastra utilizat pentru tergerea unui produs din baza de date

49

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

Figura 2.20 - Selectarea produsului ce va fi ters din baza de date


public class stergere_produs extends JFrame { JPanel contentPane; XYLayout xYLayout1 = new XYLayout(); JLabel jLabel1 = new JLabel(); JComboBox jComboBox1 = new JComboBox(); JLabel jLabel2 = new JLabel(); JTextField jTextField1 = new JTextField(); JLabel jLabel3 = new JLabel(); JPanel jPanel1 = new JPanel(); XYLayout xYLayout2 = new XYLayout(); JTextField jTextField2 = new JTextField(); JLabel jLabel4 = new JLabel(); JTextField jTextField3 = new JTextField(); JButton jButton1 = new JButton(); JButton jButton2 = new JButton(); //Construct the frame public stergere_produs() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); jLabel1.setRequestFocusEnabled(true); jLabel1.setVerifyInputWhenFocusTarget(true); jLabel1.setText("Cod produs"); contentPane.setLayout(xYLayout1); this.setSize(new Dimension(568, 171)); this.setState(Frame.ICONIFIED); this.setTitle("Stergere produs"); this.addComponentListener(new stergere_produs_this_componentAdapter(this)); jLabel2.setText("Denumire produs"); jTextField1.setText(""); jLabel3.setText("UM"); jPanel1.setLayout(xYLayout2); jPanel1.setForeground(Color.gray); jPanel1.setBorder(BorderFactory.createLineBorder(Color.black)); jTextField2.setText(""); jLabel4.setText("Pret unitar"); jTextField3.setText(""); jButton1.setText("Stergere"); jButton1.addActionListener(new stergere_produs_jButton1_actionAdapter(this)); jButton2.setText("Revenire"); jButton2.addActionListener(new stergere_produs_jButton2_actionAdapter(this)); jComboBox1.addItemListener(new stergere_produs_jComboBox1_itemAdapter(this)); contentPane.add(jLabel1, new XYConstraints(11, 39, 81, 25)); contentPane.add(jComboBox1, new XYConstraints(112, 39, 106, 25)); jPanel1.add(jLabel2, new XYConstraints(22, 16, 92, 25)); jPanel1.add(jLabel3, new XYConstraints(22, 56, 102, 25)); jPanel1.add(jTextField1, new XYConstraints(134, 16, 107, 25)); jPanel1.add(jLabel4, new XYConstraints(22, 89, 86, 25)); jPanel1.add(jTextField3, new XYConstraints(134, 93, 107, 25)); jPanel1.add(jTextField2, new XYConstraints(131, 49, 107, 25));

50

Aplicaii cu baze de date n JBuilder


contentPane.add(jButton1, new XYConstraints(29, 77, 147, 30)); contentPane.add(jButton2, new XYConstraints(29, 123, 147, 30)); contentPane.add(jPanel1, new XYConstraints(238, 13, 300, 136)); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } }

/* n momentul n care se afieaz forma, n lista derulant vor fi afiate codurile produs existente n baza de date */ void this_componentShown(ComponentEvent e) { String sql_statement; // comanda SQL ce va fi utilizat sql_statement="select codpr from produse"; try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; // nregistrarea driverului JDBC folosind clasa DriverManager Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // Stabilirea unei conexiuni ctre baza de date Connection c = DriverManager.getConnection(dbURL, user, password); // Execuia unei comenzi SQL Statement s1 = c.createStatement(); ResultSet r = s1.executeQuery(sql_statement); // Procesarea rezultatelor (afiarea datelor n lista derulant jComboBox1) while (r.next()) { jComboBox1.addItem(r.getString("Codpr") ); } // nchiderea conexiunii la baza de date r.close(); s1.close(); } catch (ClassNotFoundException a) { // Could not find the driver }
51

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

catch (SQLException a) { // Could not connect to the database } //elementul selectat din lista derulant, va fi elementul cu indicele 0 jComboBox1.setSelectedIndex(0); } //tergerea unui produs din baza de date void jButton1_actionPerformed(ActionEvent e) { // crearea unui obiect de tip clasa produs produs p=new produs(); /*variabila membru cod_produs a obiectului p va avea ca valoare, elementul selectat din lista derulant jComboBox1 */ p.cod_produs=Integer.parseInt(jComboBox1.getSelectedItem().toString()); // apelarea metodei tergere_produs p.stergere_produs(); p=null; // tergerea informaiilor din zonele de editare jTextField1.setText(""); jTextField2.setText(""); jTextField3.setText(""); //tergerea elementelor din lista derulant jComboBox1.removeAllItems(); //revenirea la forma principal this.hide(); } /* n cazul n care nu se terge nici un produs, pentru revenirea la forma principal se va aciona un clic asupra butonului de comand revenire */ void jButton2_actionPerformed(ActionEvent e) { // tergerea elementelor din lista derulant jComboBox1.removeAllItems(); // revenirea la forma principal this.hide(); } /* n momentul n care se selecteaz un element din lista derulant, n zonele de
52

Aplicaii cu baze de date n JBuilder

editare, vor fi afiate denumirea, unitatea de msur i preul, corespunztoare produsului selectat */ void jComboBox1_itemStateChanged(ItemEvent e) { jPanel1.setVisible(true); // se testeaz dac lista derulant nu este vid if(jComboBox1.getItemCount()>0){ // se creaz un obiect de clasa p produs p=new produs(); /*variabila membru cod_produs a obiectului p va avea ca valoare, elementul selectat din lista derulant jComboBox1 */ p.cod_produs=Integer.parseInt(jComboBox1.getSelectedItem().toString()); // se apeleaz metoda citire_produs p.citire_produs(); /* n zonele de editare for fi afiate denumirea, unitatea de msur i preul, corespunztoare codului produs selectat din lista derulant jComboBox1*/ jTextField1.setText(p.denumire_produs); jTextField2.setText(p.unitate_de_masura); jTextField3.setText(String.valueOf(p.pret)); p=null;} } }
class stergere_produs_this_componentAdapter extends java.awt.event.ComponentAdapter { stergere_produs adaptee; stergere_produs_this_componentAdapter(stergere_produs adaptee) { this.adaptee = adaptee; } public void componentShown(ComponentEvent e) { adaptee.this_componentShown(e); } } class stergere_produs_jButton1_actionAdapter implements java.awt.event.ActionListener { stergere_produs adaptee; stergere_produs_jButton1_actionAdapter(stergere_produs adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton1_actionPerformed(e); } } class stergere_produs_jButton2_actionAdapter implements java.awt.event.ActionListener { stergere_produs adaptee; stergere_produs_jButton2_actionAdapter(stergere_produs adaptee) {

53

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder
this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton2_actionPerformed(e); } } class stergere_produs_jComboBox1_itemAdapter implements java.awt.event.ItemListener { stergere_produs adaptee; stergere_produs_jComboBox1_itemAdapter(stergere_produs adaptee) { this.adaptee = adaptee; } public void itemStateChanged(ItemEvent e) { adaptee.jComboBox1_itemStateChanged(e); } }

Pentru operaiile de nregistrare i tergere a clienilor i delegailor, se vor utiliza programe asemntoare cazului n care s-au nregistrat i ters produse. Pentru nregistrarea unui contract, se utilizeaz fereastra prezentat n Figurile 2.21 i 2.22. Pentru nregistrarea unui contract, se vor selecta un cod client i un cod produs. La selectarea codului client, va fi afiat automat, ntr-o zon de editare, denumirea clientului. La selectarea codului produs, vor fi afiate automat, n zone de editare, denumirea produsului, preul unitar i unitatea de msur. Ca i n cazul produselor, pentru clieni avem o clas client, ce va fi utilizat pentru determinarea denumirii clientului, corespunztoare codului client selectat. n continuare, prezentm clasa client.
package export_de_produse; import java.awt.*; import com.borland.dx.sql.dataset.*; import java.sql.*;

//clasa client public class client { //variabilele membru ale clasei int cod_client; String denumire_client, adresa_client, tara, banca, contul, email, telefon;

54

Aplicaii cu baze de date n JBuilder

Figura 2.21 - Fereastr utilizat pentru nregistrarea unui contract


55

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

Figura 2.22 - nregistrarea unui contract - fereastra n execuie //metoda nregistrare_client void inregistrare_client(int cod, String d, String ad, String t, String b, String co, String e, String tel){ cod_client=cod; denumire_client=d; adresa_client=ad; tara=t; banca=b; contul=co; email=e; telefon=tel; // comanda SQL care va fi executat String sql_statement; sql_statement="Insert into clienti values("+cod+",'"+d+"','"+ad+"','"+t+"', '"+b+ "', '"+co+"', '"+e+"', '"+tel+"')"; try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; // nregistrarea driverului JDBC folosind clasa DriverManager Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // Stabilirea unei conexiuni ctre baza de date
56

Aplicaii cu baze de date n JBuilder

Connection c = DriverManager.getConnection(dbURL, user, password); // Execuia unei comenzi SQL Statement s = c.createStatement(); s.executeUpdate(sql_statement); // nchiderea unei conexiuni la o baz de date s.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } } //determinarea datelor clientului, pentru un cod client selectat void citire_client(){ String sql_statement; sql_statement="select * from clienti where Codcl=" + String.valueOf(cod_client); try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s = c.createStatement(); ResultSet r = s.executeQuery(sql_statement); while (r.next()) { denumire_client=r.getString("Dencl"); adresa_client=r.getString("Adrcl"); tara=r.getString("tara"); banca=r.getString("Banca"); contul=r.getString("Contul"); email=r.getString("Email"); telefon=r.getString("Telefon"); } r.close(); s.close(); } catch (ClassNotFoundException a) { // Could not find the driver
57

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

} catch (SQLException a) { // Could not connect to the database } } //metoda utilizat pentru tergerea unui client din baza de date void stergere_client(){ String sql_statement; sql_statement="delete from clienti where codcl="+cod_client; try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s = c.createStatement(); s.executeUpdate(sql_statement); s.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } } } Pentru nregistrarea unui contract, va fi utilizat o instan a clasei contract, care este definit n modul urmtor:
package export_de_produse; import com.borland.dx.sql.dataset.*; import java.sql.*;

//clasa contract public class contract { //variabilele membru ale clasei int nr_contract, cod_client, cantitate, cod_produs; String data_intocmirii, conditii_de_livrare, modalitate_de_plata, termen_de_plata, locul_descarcarii, data_expedierii, mijloc_de_transport;
58

Aplicaii cu baze de date n JBuilder

/* metoda nregistrare_date_contract se introduc datele n tabela date_contract, din Figura 2.11 */ void inregistrare_date_contract(int nr_contract, int cod_produs, int cantitate){ this.nr_contract=nr_contract; this.cod_produs=cod_produs; this.cantitate=cantitate; String sql_statement; sql_statement="Insert into Date_contract values("+String.valueOf(this.nr_contract) +", "+this.cod_produs +", "+this.cantitate+")"; try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s = c.createStatement(); s.executeUpdate(sql_statement); s.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } } //metoda nregistrare_contract void inregistrare_contract(int nr_contract, String data_intocmirii, int cod_client, String conditii_de_livrare, String modalitate_de_plata, String termen_de_plata, String locul_descarcarii, String data_expedierii, String mijloc_de_transport){ this.nr_contract =nr_contract; this.data_intocmirii=data_intocmirii; this.cod_client=cod_client; this.conditii_de_livrare=conditii_de_livrare; this.modalitate_de_plata=modalitate_de_plata; this.termen_de_plata=termen_de_plata; this.locul_descarcarii=locul_descarcarii; this.data_expedierii=data_expedierii; this.mijloc_de_transport=mijloc_de_transport;
59

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

//comanda SQL care va fi executat String sql_statement; sql_statement="Insert into contracte values("+String.valueOf(this.nr_contract)+ ", #"+this.data_intocmirii+"#, "+ String.valueOf(this.cod_client)+ ", '"+ this.conditii_de_livrare+"', '"+ this.modalitate_de_plata+ "', #"+ this.termen_de_plata+"#, '"+this.locul_descarcarii+"', #"+ this.data_expedierii+"#, "+ this.mijloc_de_transport +"')"; try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s = c.createStatement(); s.executeUpdate(sql_statement); s.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } } } n continuare se prezint codul corespunztor ferestrei prezentat n Figura 2.21:
package export_de_produse; import java.awt.*; import java.awt.event.*; import javax.swing.*; import com.borland.jbcl.layout.*; import java.text.SimpleDateFormat; import com.borland.dx.sql.dataset.*; import com.borland.dx.dataset.*; import java.sql.*; import java.lang.*;

/* se import clasele produs, client i contract din pachetul export_de_produse */ import export_de_produse.produs;
60

Aplicaii cu baze de date n JBuilder

import export_de_produse.client; import export_de_produse.contract;


public class i_contract extends JFrame { JPanel contentPane; XYLayout xYLayout1 = new XYLayout(); JLabel jLabel1 = new JLabel(); JComboBox jComboBox1 = new JComboBox(); JLabel jLabel2 = new JLabel(); JComboBox jComboBox2 = new JComboBox(); JLabel jLabel3 = new JLabel(); JLabel jLabel4 = new JLabel(); JTextField jTextField1 = new JTextField(); JLabel jLabel5 = new JLabel(); JTextField jTextField2 = new JTextField(); JLabel jLabel6 = new JLabel(); JTextField jTextField3 = new JTextField(); JPanel jPanel1 = new JPanel(); XYLayout xYLayout2 = new XYLayout(); JLabel jLabel7 = new JLabel(); JTextField jTextField4 = new JTextField(); JLabel jLabel8 = new JLabel(); JTextField jTextField5 = new JTextField(); JLabel jLabel9 = new JLabel(); JFormattedTextField jFormattedTextField1 = new JFormattedTextField(new SimpleDateFormat("MM/dd/yy")); JLabel jLabel10 = new JLabel(); JLabel jLabel11 = new JLabel(); JFormattedTextField jFormattedTextField2 = new JFormattedTextField(); JLabel jLabel12 = new JLabel(); JTextField jTextField6 = new JTextField(); JLabel jLabel13 = new JLabel(); JTextField jTextField7 = new JTextField(); JLabel jLabel14 = new JLabel(); JTextField jTextField8 = new JTextField(); JLabel jLabel15 = new JLabel(); JLabel jLabel16 = new JLabel(); JLabel jLabel17 = new JLabel(); JLabel jLabel18 = new JLabel(); JTextField jTextField9 = new JTextField(); JFormattedTextField jFormattedTextField3 = new JFormattedTextField(); JButton jButton1 = new JButton(); JButton jButton2 = new JButton(); JButton jButton3 = new JButton(); JTextField jTextField10 = new JTextField(); //Construct the frame public i_contract() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); jLabel1.setText("Cod client"); contentPane.setLayout(xYLayout1); this.setSize(new Dimension(630, 305)); this.setTitle("Inregistrare Contract"); this.addComponentListener(new i_contract_this_componentAdapter(this)); jLabel2.setRequestFocusEnabled(true); jLabel2.setText("Denumire client"); jLabel3.setText("Cod produs"); jLabel4.setRequestFocusEnabled(true); jLabel4.setText("Denumire produs"); jLabel5.setText("Pret unitar"); jTextField1.setText(""); jTextField2.setText(""); jLabel6.setText("Unitate de masura"); jPanel1.setBorder(BorderFactory.createLineBorder(Color.black)); jPanel1.setLayout(xYLayout2); jLabel7.setText("Numar contract"); jTextField4.setText(""); jLabel8.setText("Cantitate"); jTextField5.setText(""); jLabel9.setText("Termen de plata"); jLabel10.setText("(\"MM/dd/yy\")"); jFormattedTextField1.setText(""); jLabel11.setText("Data intocmirii"); jFormattedTextField2.setText(""); jLabel12.setText("Conditii de livrare"); jTextField6.setText("Transport auto international"); jLabel13.setText("Locul descarcarii"); jTextField7.setText(""); jLabel14.setText("Mijloc de transport"); jTextField8.setText("auto"); jLabel15.setText("Modalitate de plata"); jLabel16.setText("(\"MM/dd/yy\")"); jLabel17.setText("(\"MM/dd/yy\")"); jLabel18.setText("Data expedierii"); jTextField9.setText("Ordin de plata"); jFormattedTextField3.setText(""); jButton1.setText("Inregistrare"); jButton1.addActionListener(new

61

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder
i_contract_jButton1_actionAdapter(this)); jButton2.setText("Anulare"); jButton2.addActionListener(new i_contract_jButton2_actionAdapter(this)); jButton3.setText("Revenire"); jButton3.addActionListener(new i_contract_jButton3_actionAdapter(this)); jComboBox2.addActionListener(new i_contract_jComboBox2_actionAdapter(this)); jComboBox1.addActionListener(new i_contract_jComboBox1_actionAdapter(this)); contentPane.add(jLabel1, new XYConstraints(11, 15, 64, 22)); contentPane.add(jComboBox1, new XYConstraints(82, 15, 111, 22)); contentPane.add(jLabel2, new XYConstraints(221, 15, 89, 22)); contentPane.add(jLabel3, new XYConstraints(11, 60, 64, 22)); contentPane.add(jLabel4, new XYConstraints(221, 60, 89, 22)); contentPane.add(jTextField1, new XYConstraints(319, 60, 111, 22)); contentPane.add(jLabel5, new XYConstraints(11, 105, 64, 22)); contentPane.add(jTextField2, new XYConstraints(82, 105, 111, 22)); contentPane.add(jLabel6, new XYConstraints(221, 105, 89, 22)); contentPane.add(jTextField3, new XYConstraints(319, 105, 111, 22)); contentPane.add(jPanel1, new XYConstraints(8, 143, 607, 144)); jPanel1.add(jLabel7, new XYConstraints(19, 11, 90, 22)); jPanel1.add(jTextField4, new XYConstraints(105, 11, 80, 22)); jPanel1.add(jLabel8, new XYConstraints(19, 48, 90, 22)); jPanel1.add(jTextField5, new XYConstraints(105, 48, 80, 22)); jPanel1.add(jLabel9, new XYConstraints(19, 85, 90, 22)); jPanel1.add(jLabel10, new XYConstraints(25, 100, 94, 25)); jPanel1.add(jFormattedTextField1, new XYConstraints(105, 85, 80, 23)); jPanel1.add(jFormattedTextField2, new XYConstraints(294, 11, 80, 20)); jPanel1.add(jLabel11, new XYConstraints(207, 11, 90, 22)); jPanel1.add(jLabel12, new XYConstraints(207, 48, 115, 22)); jPanel1.add(jTextField6, new XYConstraints(294, 48, 80, 22)); jPanel1.add(jLabel13, new XYConstraints(207, 87, 110, 22)); jPanel1.add(jTextField7, new YConstraints(294, 87, 81, 22)); jPanel1.add(jLabel14, new XYConstraints(391, 11, 96, 22)); jPanel1.add(jTextField8, new XYConstraints(493, 11, 80, 22)); jPanel1.add(jLabel15, new XYConstraints(391, 50, 99, 23)); jPanel1.add(jLabel16, new XYConstraints(213, 23, 94, 25)); jPanel1.add(jLabel18, new XYConstraints(391, 78, 89, 22)); jPanel1.add(jLabel17, new XYConstraints(395, 90, 94, 25)); jPanel1.add(jTextField9, new XYConstraints(493, 48, 80, 22)); jPanel1.add(jFormattedTextField3, new XYConstraints(493, 84, 80, 22)); contentPane.add(jButton1, new XYConstraints(474, 15, 121, 22)); contentPane.add(jButton2, new XYConstraints(474, 55, 121, 22)); contentPane.add(jButton3, new XYConstraints(474, 98, 121, 22)); contentPane.add(jComboBox2, new XYConstraints(82, 60, 111, 22)); contentPane.add(jTextField10, new XYConstraints(319, 15, 111, 22)); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } }

/* metoda care se execut n momentul afirii ferestrei utilizat pentru nregistrarea unui contract */ void this_componentShown(ComponentEvent e) { // adugarea codului produs n lista derulant jComboBox2 String sql_statement; sql_statement="select codpr from produse"; try { String dbURL = "jdbc:odbc:evid_export";
62

Aplicaii cu baze de date n JBuilder

String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s1 = c.createStatement(); ResultSet r = s1.executeQuery(sql_statement); while (r.next()) { jComboBox2.addItem(r.getString("Codpr") ); } r.close(); s1.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } jComboBox2.setSelectedIndex(0); // adugarea codului client n lista derulant jComboBox1 sql_statement="select codcl from clienti"; try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s1 = c.createStatement(); ResultSet r = s1.executeQuery(sql_statement); while (r.next()) { jComboBox1.addItem(r.getString("Codcl") ); } r.close(); s1.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } }

63

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

// nregistrarea unui nou contract void jButton1_actionPerformed(ActionEvent e) { String sql_statement; sql_statement="select count(Nrcontr) as no_contr from Contracte nrcontr="+jTextField4.getText(); int no_contr=0; try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s1 = c.createStatement(); ResultSet r = s1.executeQuery(sql_statement); while (r.next()) { no_contr=r.getInt("no_contr"); } r.close(); s1.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } contract c=new contract(); //nregistrarea datelor n tabela contracte if(no_contr= =0) {c.inregistrare_contract(Integer.parseInt(jTextField4.getText()), jFormattedTextField2.getText(), Integer.parseInt(jComboBox1.getSelectedItem().toString()), jTextField6.getText(), jTextField9.getText(), jFormattedTextField1.getText(), jTextField7.getText(), jFormattedTextField3.getText(),jTextField8.getText());} //nregistrarea datelor n tabela date_contract c.inregistrare_date_contract(Integer.parseInt(jTextField4.getText()), Integer.parseInt(jComboBox2.getSelectedItem().toString()), Integer.parseInt(jTextField5.getText())); jTextField5.setText("");
64

where

Aplicaii cu baze de date n JBuilder

c=null; } /* n momentul n care se selecteaz un element din lista derulant jComboBox2, n zonele de editare jTextField1, jTextField3, respectiv jTextField2, vor fi afiate denumirea, unitatea de msur, respectiv preul corespunztoare produsului selectat */ void jComboBox2_actionPerformed(ActionEvent e) { if(jComboBox2.getItemCount()>0){ produs p=new produs(); p.cod_produs=Integer.parseInt(jComboBox2.getSelectedItem().toString()); p.citire_produs(); jTextField1.setText(p.denumire_produs); jTextField3.setText(p.unitate_de_masura); jTextField2.setText(String.valueOf(p.pret)); p=null;} } /* n momentul n care se selecteaz un element din lista derulant jComboBox1, n zona de editare jTextField10 va fi afiat denumirea clientului corespunztoare codului selectat */ void jComboBox1_actionPerformed(ActionEvent e) { if(jComboBox1.getItemCount()>0){ client cl=new client(); cl.cod_client=Integer.parseInt(jComboBox1.getSelectedItem().toString()); cl.citire_client(); jTextField10.setText(cl.denumire_client); cl=null;} } //anularea datelor void jButton2_actionPerformed(ActionEvent e) { jTextField4.setText(""); jTextField5.setText(""); jTextField7.setText("");jFormattedTextField1.setText(""); jFormattedTextField2.setText(""); jFormattedTextField3.setText(""); } /*revenirea la fereastra principal - tergerea textului din zonele de editare i tergerea elementelor din listele derulante */ void jButton3_actionPerformed(ActionEvent e) { jTextField4.setText(""); jTextField5.setText(""); jTextField7.setText("");jFormattedTextField3.setText(""); jFormattedTextField1.setText(""); jFormattedTextField2.setText(""); jComboBox1.removeAllItems(); jComboBox2.removeAllItems();
65

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

this.hide(); } }
class i_contract_this_componentAdapter extends java.awt.event.ComponentAdapter { i_contract adaptee; i_contract_this_componentAdapter(i_contract adaptee) { this.adaptee = adaptee; } public void componentShown(ComponentEvent e) { adaptee.this_componentShown(e); } } class i_contract_jButton1_actionAdapter implements java.awt.event.ActionListener { i_contract adaptee; i_contract_jButton1_actionAdapter(i_contract adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton1_actionPerformed(e); } } class i_contract_jComboBox2_actionAdapter implements java.awt.event.ActionListener { i_contract adaptee; i_contract_jComboBox2_actionAdapter(i_contract adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jComboBox2_actionPerformed(e); } } class i_contract_jComboBox1_actionAdapter implements java.awt.event.ActionListener { i_contract adaptee; i_contract_jComboBox1_actionAdapter(i_contract adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jComboBox1_actionPerformed(e); } } class i_contract_jButton2_actionAdapter implements java.awt.event.ActionListener { i_contract adaptee; i_contract_jButton2_actionAdapter(i_contract adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton2_actionPerformed(e); } }

66

Aplicaii cu baze de date n JBuilder


class i_contract_jButton3_actionAdapter implements java.awt.event.ActionListener { i_contract adaptee; i_contract_jButton3_actionAdapter(i_contract adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton3_actionPerformed(e); } }

Pentru afiarea unui contract se va utiliza un document html. Documentul html va fi creat utiliznd fereastra prezentat n Figura 2.23.

Figura 2.23 - Alegerea contractului pentru care va fi creat un document html Un astfel de contract este prezentat n Figura 2.24, corespunztor numrului selectat n Figura 2.23. Datele din contractul din Figura 2.24 corespund informaiilor din baza de date prezentat n Figura 2.25. n continuare se prezint codul de program corespunztor ferestrei din Figura 2.23.
package export_de_produse; import java.awt.*; import java.awt.event.*; import javax.swing.*; import com.borland.jbcl.layout.*; import java.io.PrintWriter; import java.io.FileWriter; import java.io.IOException;

/* pentru a utiliza instane ale clasei contract, se va importa aceast clas, din pachetul export_de_produse*/
import export_de_produse.contract; import java.sql.*; public class v_contract extends JFrame { JPanel contentPane; JButton jButton1 = new JButton(); XYLayout xYLayout1 = new XYLayout(); JComboBox jComboBox1 = new JComboBox(); JLabel jLabel1 = new JLabel(); JButton jButton2 = new JButton();

67

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

Figura 2.24 - Afiarea unui contract


68

Aplicaii cu baze de date n JBuilder

Figura 2.25 - Datele din baza de date


//Construct the frame public v_contract() { enableEvents(AWTEvent.WINDOW_EVENT_MASK);

69

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder
try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); jButton1.setText("Contract"); jButton1.addActionListener(new v_contract_jButton1_actionAdapter(this)); contentPane.setLayout(xYLayout1); this.setSize(new Dimension(464, 86)); this.setTitle("Vizualizare contract"); this.addComponentListener(new v_contract_this_componentAdapter(this)); jLabel1.setText("Numar contract "); jButton2.setText("Rvenire"); jButton2.addActionListener(new v_contract_jButton2_actionAdapter(this)); contentPane.add(jLabel1,new XYConstraints(5, 15, 89, 25)); contentPane.add(jComboBox1,new XYConstraints(96, 15, 82, 25)); contentPane.add(jButton1, new XYConstraints(199, 16, 116, 25)); contentPane.add(jButton2,new XYConstraints(342, 16, 115, 25)); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } }

void jButton1_actionPerformed(ActionEvent e) { /*comanda SQL ce va fi utilizat pentru afiarea datelor contractului - numr contract, data ntocmirii, condiiile de livrare, modul de plat, termen de plat, locul descrcrii, data expedierii, mijloc de transport i denumire client */ String sql_statement=""; sql_statement="SELECT Contracte.Nrcontr as numar_contract, Contracte.Dataint as data_intocmirii, "+"Contracte.Condlivr as conditii_de_livrare, Contracte.Modpl as modalitate_de_plata, Contracte.Termenpl as termen_de_plata, "+ "Contracte.Loculdesc as locul_descarcarii, Contracte.Dataexp as data_expedierii, Contracte.Mijltr "+ " as mijloc_de_transport, Clienti.Dencl as denumire_client "+ " FROM Clienti INNER JOIN Contracte ON Clienti.Codcl = Contracte.Codcl where "+ " contracte.nrcontr="+jComboBox1.getSelectedItem().toString(); //comanda SQL ce va fi utilizat pentru afiarea datelor unitii (furnizorului) String sql_statement2="Select * from unitatea"; // comanda SQL cu ajutorul creia se vor afia datele produselor din contract String sql_statement3="Select Date_contract.Cant as cantitatea, "+ " ((Produse.pret*Date_contract.cant)+0.19*(Produse.pret*Date_contract.cant)) "+ "as valoare_totala, Produse.Denpr as denumire_produs, Produse.UM as "+
70

Aplicaii cu baze de date n JBuilder

"unitate_de_masura, Produse.Pret as pret_unitar FROM Produse INNER JOIN "+ "Date_contract ON Produse.Codpr = Date_contract.Codpr where "+ " Date_contract.nrcontr="+jComboBox1.getSelectedItem().toString(); /* cod_html este o variabil de tip String, n care vom memora codul corespunztor fiierului html n care va fi afiat contractul */ String cod_html=""; try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s1 = c.createStatement(); ResultSet r = s1.executeQuery(sql_statement); // tag-urile de nceput ale paginii cod_html="<html><head><title>Contract</title><body bgcolor=yellow> "+ //datele vor fi afiate ntr-un tabel "<table border=2 cellspacing=0> " + " <tr> <td> </td><td> <b><font color=\" blue \" size=14 face=\"Arial\">"+ "CONTRACT NR </font></b></td> "; while (r.next()) { //afiarea numrului contractului i a datei ntocmirii cod_html =cod_html+" <td><font size=14>"+r.getString("numar_contract") +"</font></td><td><b>DATA</b> </td><td>"+ r.getDate("data_intocmirii")+"</td></tr>"; cod_html=cod_html+ "<tr><td colspan=3> <b>Furnizor </b></td> <td "+ "colspan=2><b>Nume Client</b></td></tr>"; try { String dbURL1 = "jdbc:odbc:evid_export"; String user1 = ""; String password1 = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c1 = DriverManager.getConnection(dbURL1, user1, password1); Statement s2 = c.createStatement();
71

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

ResultSet r1 = s2.executeQuery(sql_statement2); while(r1.next()){ // afiarea datelor corespunztoare furnizorului cod_html=cod_html+" <tr><td colspan=3> "+r1.getString("Denumire") +"," +r1.getString("Sediul")+", "+r1.getString("Judetul")+" </td>" ; } r1.close(); s2.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } //afiarea denumirii clientului cod_html=cod_html+ "<td colspan=2>"+ r.getString("denumire_client")+ "</td></tr>"; cod_html=cod_html+" <tr><td><b>Denumirea marfii </b></td><td><b>"+ "Unitatea de masura</b></td><td><b> Cantitatea</b></td>"+"<td><b>Pretul "+ "unitar </b></tT><td><b>Valoarea </b></td></tr>"; /*se vor afia toate produsele prevzute n contract, precum i valoarea total a acestora; pentru calculul valorii totale, se va utiliza variabila suma_valoare*/ int suma_valoare=0; int val=0; try { String dbURL2 = "jdbc:odbc:evid_export"; String user2 = ""; String password2 = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c2 = DriverManager.getConnection(dbURL2, user2, password2); Statement s3 = c2.createStatement(); ResultSet r2 = s3.executeQuery(sql_statement3); while(r2.next()){ /*calculul valorii totale i afiarea datelor corespunztoare fiecrui produs (denumire, unitate de msur, cantitate, pre unitar i valoare) */
72

Aplicaii cu baze de date n JBuilder

val=r2.getInt("valoare_totala"); suma_valoare+=val; cod_html=cod_html+"<tr><td>"+r2.getString("denumire_produs")+ "</td><td>"+ r2.getString("unitate_de_masura")+"</td><td><p align= "+ "\"right\">"+r2.getString("cantitatea")+"</td><td><p align=\"right\">" +r2.getString("pret_unitar") +"</td><td><p align=\"right\">"+ String.valueOf(val)+"</td></tr>"; } r2.close(); s3.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } //afiarea valorii totale a contractului cod_html=cod_html+ "<tr><td colspan=4> <p align=\"right\"> <b>Valoare "+ "totala</b> </td><td><p align=\"right\">"+suma_valoare+"</td></tr>"; cod_html=cod_html+"<tr><td><b>Conditii de livrare</b></td><td colspan=2><b> Mod de plata </b></td> "+ "<td><b>Termen de plata</b></td> <td><b> Locul descarcarii </b></td></tr>"; /*afiarea condiiilor de livrare, modalitii de plat, termenului de plat i locului descrcrii mrfii*/ cod_html=cod_html+"=<tr><td>"+ r.getString("conditii_de_livrare")+"</td>"+ "<td colspan=2>"+ r.getString("modalitate_de_plata") + "</td> <td>"+r.getDate("termen_de_plata")+"</td> <td>"+ r.getString("locul_descarcarii") +"</td></tr>"; cod_html=cod_html+"<tr><td><b>Data expedierii</b></td><td><b>Mijloc de "+ "transport</b></td><td colspan=3></td></tr>"; //se afieaz data expedierii i mijlocul de transport cod_html=cod_html+"<tr><td>"+r.getDate("data_expedierii")+"</td><td>"+ r.getString("mijloc_de_transport")+"</td><td colspan=3></td></tr>"; } r.close(); s1.close(); } catch (ClassNotFoundException a) {
73

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

// Could not find the driver } catch (SQLException a) { // Could not connect to the database } //nchiderea tag-ului pentru tabel cod_html=cod_html+ "</table>"; cod_html=cod_html+"<BR><BR><BR>"; //tag-uri utilizate pentru semntura i tampila furnizorului cod_html=cod_html+"<p align=left style=\"line-height: 100%; word-spacing: 0; margin-top: 0; margin-bottom: 0\"> <b>Furnizor</b> </p>"; cod_html=cod_html+"<p align=left style=\"line-height: 100%; word-spacing: 0; margin-top: 0; margin-bottom: 0\"> Semnatura si stampila: </p>"; //tag-uri utilizate pentru semntura i tampila clientului cod_html=cod_html+"<p align=left style=\"line-height: 100%; word-spacing: "+ "0; margin-left: 650; margin-top: 0; margin-bottom: 0\"> <b>Client</b> </p>"; cod_html=cod_html+"<p align=left style=\"line-height: 100%; word-spacing: "+ "0; margin-left: 650; margin-top: 0; margin-bottom: 0\"> Semnatura si stampila: </p>"; cod_html=cod_html+ "</body></html>"; //crearea fiierului html ce conine datele contractului try{ PrintWriter fisier_iesire=new PrintWriter(new FileWriter("contract.html"), true); fisier_iesire.println(cod_html); fisier_iesire.close(); } catch (IOException t){ System.out.println("eroare scriere fisier"); } } //adugarea elementelor n lista derulant din Figura 3.23 void this_componentShown(ComponentEvent e) { String sql_statement; sql_statement="select Nrcontr from contracte"; try { String dbURL = "jdbc:odbc:evid_export";
74

Aplicaii cu baze de date n JBuilder

String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s1 = c.createStatement(); ResultSet r = s1.executeQuery(sql_statement); while (r.next()) { jComboBox1.addItem(r.getString("Nrcontr") ); jComboBox1.setSelectedIndex(-1); } r.close(); s1.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } } /* n momentul revenirii la fereastra principal, vor fi terse elementele din lista derulant */ void jButton2_actionPerformed(ActionEvent e) { jComboBox1.removeAllItems(); this.hide(); } }
class v_contract_jButton1_actionAdapter implements java.awt.event.ActionListener { v_contract adaptee; v_contract_jButton1_actionAdapter(v_contract adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton1_actionPerformed(e); } } class v_contract_this_componentAdapter extends java.awt.event.ComponentAdapter { v_contract adaptee; v_contract_this_componentAdapter(v_contract adaptee) { this.adaptee = adaptee; } public void componentShown(ComponentEvent e) { adaptee.this_componentShown(e); }

75

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder
} class v_contract_jButton2_actionAdapter implements java.awt.event.ActionListener { v_contract adaptee; v_contract_jButton2_actionAdapter(v_contract adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton2_actionPerformed(e); } }

Pentru nregistrarea datelor ce apar n dispoziia de livrare, se va utiliza ferestra prezentat n Figura 2.26.

Figura 2.26 - nregistrarea dispoziiei de livrare Pentru nregistrarea unei dispoziii de livrare se vor utiliza dou clase: clasa livrri i clasa evidena_ncasri. n continuare, este prezentat clasa livrri: package export_de_produse; import com.borland.dx.sql.dataset.*; import java.sql.*; public class livrari { // variabilele membru ale clasei String data_intocmirii, locul_incarcarii,CNP;
76

Aplicaii cu baze de date n JBuilder

int numar_document, numar_factura, greutatea_neta, greutatea_bruta, numar_contract; /* metoda nregistrare_livrare se utilizeaz pentru introducerea nregistrrilor n tabela livrri din Figura 2.25 */ void inregistrare_livrare( String data_intocmirii, int numar_document, int numar_factura,String locul_incarcarii, int greutatea_neta, int greutatea_bruta, String CNP, int numar_contract){ this.data_intocmirii=data_intocmirii; this.numar_document=numar_document; this.numar_factura=numar_factura; this.locul_incarcarii=locul_incarcarii; this.greutatea_neta=greutatea_neta; this.greutatea_bruta=greutatea_bruta; this.CNP=CNP; this.numar_contract=numar_contract; // comanda SQL utilizat pentru introducerea datelor n tabela livrri String sql_statement=""; sql_statement="Insert into livrari values("+String.valueOf(this.numar_document)+ ", #"+ this.data_intocmirii+"#, "+this.numar_factura+", "+this.locul_incarcarii+"'," + this.greutatea_neta+", "+this.greutatea_bruta+", "+ this.numar_contract +", "+ this.CNP+"')"; //introducerea datelor n tabel try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s = c.createStatement(); s.executeUpdate(sql_statement); s.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } } } Clasa evidena_ncasri este definit astfel:
77

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

package export_de_produse; import com.borland.dx.sql.dataset.*; import java.sql.*; public class evidenta_incasari { //variabilele membru ale clasei int numar_factura, numar, incasari; String data_incasarii, seria; /* metoda nregistrare_factur se utilizeaz pentru a nregistra n tabela evid_ncasri din Figura 2.25, datele corespunztoare facturii numrul de ordine, seria i numrul; iniial, pentru cmpul ncasri se introduce valoare 0, iar pentru cmpul data_ncasrii, valoarea null */ void inregistrare_factura(int numar_factura, String seria, int numar, int incasari, String data_incasarii){ this.numar_factura=numar_factura; this.seria=seria; this.numar=numar; this.incasari=incasari; this.data_incasarii=data_incasarii; /* comanda SQL ce va fi utilizat pentru introducerea datelor n tabela evid_ncasri */ String sql_statement; sql_statement="Insert into evid_incasari values("+ String.valueOf(this.numar_factura)+ ", '"+this.seria+ "', "+ String.valueOf(this.numar)+", "+String.valueOf(this.incasari)+", " + this.data_incasarii+")"; // inserarea datelor n tabela evid_ncasri try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s = c.createStatement(); s.executeUpdate(sql_statement); s.close(); } catch (ClassNotFoundException a) {
78

Aplicaii cu baze de date n JBuilder

// Could not find the driver } catch (SQLException a) { // Could not connect to the database } } /* metoda nregistrare_ncasare se utilizeaz pentru nregistrarea ncasrilor; pentru fiecare ncasare se memoreaz valoarea ncasat, precum i data la care s-a efectuat ncasarea */ void inregistrare_incasare(int numar_factura, int incasari, String data_incasarii){ this.numar_factura=numar_factura; this.incasari=incasari; this.data_incasarii=data_incasarii; // comand SQL utilizat pentru nregistrarea ncasrilor String sql_statement=""; sql_statement="update evid_incasari set incasari="+this.incasari+ " where nrfact=" +this.numar_factura; // nregistrarea ncasrilor n tabela evid_ncasri try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s = c.createStatement(); s.executeUpdate(sql_statement); s.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } /* comand SQL utilizat pentru nregistrarea datelor calendaristice, corespunztoare ncasrilor efectuate*/ sql_statement=""; sql_statement="update evid_incasari set datainc= #"+this.data_incasarii+ "# where nrfact=" +this.numar_factura;
79

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

// nregistrarea datelor calendaristice la care s-au efectuat ncasri try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s = c.createStatement(); s.executeUpdate(sql_statement); s.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } } } n continuare se prezint codul corespunztor ferestrei din Figura 2.26. Fereastra n faza de proiectare este prezentat n Figura 2.27. package export_de_produse;
import java.awt.*; import java.awt.event.*; import javax.swing.*; import com.borland.jbcl.layout.*; import com.borland.dx.dataset.*; import java.sql.*; import java.lang.*; import com.borland.dbswing.*; import javax.swing.border.*; import com.borland.dx.sql.dataset.*;

import java.text.SimpleDateFormat; /* se import clasele produs, client, contract, livrri i eviden_ncasri din pachetul export_de_produse */ import export_de_produse.produs; import export_de_produse.client; import export_de_produse.contract; import export_de_produse.livrari;

80

Aplicaii cu baze de date n JBuilder

Figura 2.27 - nregistrarea dispoziiei de livrare fereastra n faza de proiectare


81

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

import export_de_produse.evidenta_incasari;
public class d_livrare extends JFrame { JPanel contentPane; XYLayout xYLayout1 = new XYLayout(); JLabel jLabel1 = new JLabel(); JComboBox jComboBox1 = new JComboBox(); JPanel jPanel1 = new JPanel(); JButton jButton1 = new JButton(); JButton jButton2 = new JButton(); JButton jButton3 = new JButton(); JLabel jLabel2 = new JLabel(); XYLayout xYLayout2 = new XYLayout(); Database database1 = new Database(); QueryDataSet queryDataSet1 = new QueryDataSet(); JScrollPane jScrollPane1 = new JScrollPane(); JdbTable jdbTable1 = new JdbTable(); JPanel jPanel2 = new JPanel(); JLabel jLabel3 = new JLabel(); XYLayout xYLayout3 = new XYLayout(); JLabel jLabel4 = new JLabel(); JTextField jTextField1 = new JTextField(); JLabel jLabel5 = new JLabel(); JFormattedTextField jFormattedTextField1 = new JFormattedTextField(new SimpleDateFormat("MM/dd/yy")); JLabel jLabel6 = new JLabel(); JComboBox jComboBox2 = new JComboBox(); JLabel jLabel7 = new JLabel(); Border border1; Border border2; JPanel jPanel3 = new JPanel(); XYLayout xYLayout4 = new XYLayout(); JLabel jLabel8 = new JLabel(); JLabel jLabel9 = new JLabel(); JTextField jTextField2 = new JTextField(); JTextField jTextField3 = new JTextField(); JLabel jLabel10 = new JLabel(); JTextField jTextField4 = new JTextField(); JLabel jLabel11 = new JLabel(); JTextField jTextField5 = new JTextField(); JLabel jLabel12 = new JLabel(); /Construct the frame public d_livrare() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); border1 = BorderFactory.createLineBorder(Color.black,1); border2 = BorderFactory.createLineBorder(Color.black,2); jLabel1.setText("Numar contract"); contentPane.setLayout(xYLayout1); this.setSize(new Dimension(627, 338)); this.setTitle("Date livrare"); this.addComponentListener(new d_livrare_this_componentAdapter(this)); jPanel1.setForeground(new Color(10, 10, 10)); jPanel1.setBorder(border2); jPanel1.setToolTipText(""); jPanel1.setLayout(xYLayout2); jButton1.setText("Inregistrare"); jButton1.addActionListener(new d_livrare_jButton1_actionAdapter(this)); jButton2.setText("Anulare"); jButton2.addActionListener(new d_livrare_jButton2_actionAdapter(this)); jButton3.setText("Revenire"); jButton3.addActionListener(new d_livrare_jButton3_actionAdapter(this)); jLabel2.setText("Date contract"); database1.setConnection(new com.borland.dx.sql.dataset.ConnectionDescriptor("jdbc:odbc:evid_export", "", "", false, "sun.jdbc.odbc.JdbcOdbcDriver")); jComboBox1.addActionListener(new d_livrare_jComboBox1_actionAdapter(this));

/* pentru afiarea datelor corespunztoare unui contract, se va folosi componenta jdbTable1; la proprietatea dataSet a acestei componente, se va selecta componenta queryDataSet1, care va avea specificat la proprietatea query, comanda SQL care se va utiliza pentru afiarea datelor cu componenta jdbTable1 */
jdbTable1.setDataSet(queryDataSet1); queryDataSet1.setQuery(new

82

Aplicaii cu baze de date n JBuilder


com.borland.dx.sql.dataset.QueryDescriptor(database1, " SELECT Contracte.Nrcontr, "+ " Contracte.Dataint, Clienti.Codcl, Clienti.Dencl, Produse.Codpr, Produse.Denpr, Produse.Pret, Produse.UM, "+ " Date_contract.Cant, Contracte.Condlivr, Contracte.Modpl, Contracte.Termenpl, Contracte.Loculdesc, "+ " Contracte.Dataexp, Contracte.Mijltr FROM Produse INNER JOIN (Clienti INNER JOIN (Contracte INNER JOIN "+ " Date_contract ON Contracte.Nrcontr = Date_contract.Nrcontr) ON Clienti.Codcl = Contracte.Codcl) ON "+ " Produse.Codpr = Date_contract.Codpr where contracte.nrcontr=-1", null, true, Load.ALL)); jPanel2.setBorder(BorderFactory.createLineBorder(Color.black)); jPanel2.setLayout(xYLayout3); jLabel3.setText("Date dispozitie de livrare"); jLabel4.setText("Numar document"); jTextField1.setText(""); jLabel5.setText("Data intocmirii"); jFormattedTextField1.setText(""); jLabel6.setRequestFocusEnabled(true); jLabel6.setText("Delegat"); jLabel7.setText("Date factura"); jPanel3.setBorder(BorderFactory.createLineBorder(Color.black)); jPanel3.setLayout(xYLayout4); jLabel8.setText("Numar factura"); jLabel9.setRequestFocusEnabled(true); jLabel9.setText("Greutate bruta"); jTextField2.setText(""); jTextField3.setSelectionStart(11); jTextField3.setText(""); jLabel10.setText("Greutate neta"); jLabel11.setText("Locul incarcarii"); jTextField5.setText(""); jLabel12.setText("(\"MM/dd/yy\")"); contentPane.add(jLabel1, new XYConstraints(20, 13, 87, 22)); contentPane.add(jComboBox1, new XYConstraints(117, 13, 104, 22)); contentPane.add(jButton1, new XYConstraints(249, 13, 109, 22)); contentPane.add(jButton2, new XYConstraints(372, 13, 109, 22)); contentPane.add(jButton3, new XYConstraints(495, 13, 109, 22)); contentPane.add(jPanel1, new XYConstraints(6, 45, 597, 287)); jPanel1.add(jLabel2, new XYConstraints(9, 4, 85, 20)); jPanel1.add(jScrollPane1, new XYConstraints(9, 25, 569, 65)); jPanel1.add(jPanel2, new XYConstraints(10, 114, 567, 60)); jPanel2.add(jLabel4, new XYConstraints(10, 14, 90, 22)); jPanel2.add(jTextField1, new XYConstraints(102, 14, 50, 22)); jPanel2.add(jLabel5, new XYConstraints(165, 13, 80, 22)); jPanel2.add(jFormattedTextField1, new XYConstraints(235, 13, 90, 22)); jPanel2.add(jLabel6, new XYConstraints(340, 13, 43, 22)); jPanel2.add(jComboBox2, new XYConstraints(385, 13, 160, 22)); jPanel2.add(jLabel12, new XYConstraints(167, 31, 81, 19)); jPanel1.add(jLabel3, new XYConstraints(10, 98, 343, 17)); jPanel1.add(jLabel7, new XYConstraints(10, 176, 171, 22)); jPanel1.add(jPanel3, new XYConstraints(10, 195, 570, 80)); jPanel3.add(jLabel8, new XYConstraints(10, 5, 98, 22)); jPanel3.add(jLabel9, new XYConstraints(10, 41, 93, 18)); jPanel3.add(jTextField2, new XYConstraints(103, 5, 140, 22)); jPanel3.add(jTextField3, new XYConstraints(103, 43, 140, 22)); jPanel3.add(jTextField4, new XYConstraints(392, 5, 140, 22)); jPanel3.add(jLabel10, new XYConstraints(295, 5, 86, 22)); jPanel3.add(jLabel11, new XYConstraints(295, 43, 90, 21)); jPanel3.add(jTextField5, new XYConstraints(392, 43, 140, 22)); jScrollPane1.getViewport().add(jdbTable1, null); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } }

/* n momentul n care este afiat fereastra pe ecran, n lista derulant jComboBox1 vor fi adugate prin program numerele contractelor, iar n lista derulant jComboBox2, delegaii */ void this_componentShown(ComponentEvent e) { // comand SQL utilizat pentru afiarea numerelor contractelor String sql_statement;
83

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

sql_statement="select distinct Nrcontr from contracte"; //executarea comenzii SQL utilizat pentru afiarea numerelor contractelor try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s1 = c.createStatement(); ResultSet r = s1.executeQuery(sql_statement); // adugarea elementelor n lista derulant jComboBox1 while (r.next()) { jComboBox1.addItem(r.getString("Nrcontr") ); jComboBox1.setSelectedIndex(-1); } r.close(); s1.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } // comand SQL utilizat pentru afiarea numelui delegailor sql_statement="select Delegat from delegati"; //executarea comenzii SQL utilizat pentru afiarea numelui delegailor try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s1 = c.createStatement(); ResultSet r = s1.executeQuery(sql_statement); // adugarea elementelor n lista derulant jComboBox2 while (r.next()) { jComboBox2.addItem(r.getString("Delegat") );
84

Aplicaii cu baze de date n JBuilder

jComboBox2.setSelectedIndex(-1); } r.close(); s1.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } } /* n momentul n care se selecteaz un numr de contract din lista derulant jComboBox1, utiliznd componenta jdbTable1, vor fi afiate datele corespunztoare contractului selectat */ void jComboBox1_actionPerformed(ActionEvent e) { String sql_statement=""; if(jComboBox1.getSelectedIndex()!=-1){ sql_statement =" SELECT Contracte.Nrcontr, Contracte.Dataint, Clienti.Codcl, "+ "Clienti.Dencl, Produse.Codpr, Produse.Denpr, Produse.Pret, Produse.UM, "+ "Date_contract.Cant, Contracte.Condlivr, Contracte.Modpl, Contracte.Termenpl,"+ "Contracte.Loculdesc, Contracte.Dataexp, Contracte.Mijltr FROM Produse "+ "INNER JOIN (Clienti INNER JOIN (Contracte INNER JOIN Date_contract "+ " ON Contracte.Nrcontr = Date_contract.Nrcontr) ON Clienti.Codcl = "+ "Contracte.Codcl) ON Produse.Codpr = Date_contract.Codpr where "+ "contracte.nrcontr="+jComboBox1.getSelectedItem().toString(); queryDataSet1.close(); queryDataSet1.setQuery(new com.borland.dx.sql.dataset.QueryDescriptor(database1, sql_statement, null, true, Load.ALL)); queryDataSet1.refresh(); } } /* metoda utilizat pentru nregistrea datelor corespunztoare dispoziiilor de livrare*/ void jButton1_actionPerformed(ActionEvent e) { int x=0; /*din tabela evid_ncasri, se determin numrul de ordine corespunztor noii facturi */ String sql_statement=""; sql_statement="select count(nrfact) as nf from evid_incasari";
85

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

// executarea comenzii SQL anterior specificat try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s1 = c.createStatement(); ResultSet r = s1.executeQuery(sql_statement); while (r.next()) { x = r.getInt("nf"); } System.out.println("1:numar de facturi="+x); r.close(); s1.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } int numar=0; if(x==0) // dac nu exist nici o factur, primul numr va fi 1 numar=1; else{ // dac exist facturi n baza de date, se determin numrul maxim de ordine sql_statement=""; sql_statement="select max(numar) as numar_maxim from evid_incasari"; try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s1 = c.createStatement(); ResultSet r = s1.executeQuery(sql_statement);
86

Aplicaii cu baze de date n JBuilder

// se determin numrul de ordine pentru urmtoarea factur ce va fi emis while (r.next()) { numar=r.getInt("numar_maxim")+1; } r.close(); s1.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } } /*se creaz o instan a clasei eviden_ncasri, pentru a nregistra datele n tabela evid_ncasri din Figura 2.25 */ evidenta_incasari e_i=new evidenta_incasari(); // se apeleaz metoda nregistrare_factur e_i.inregistrare_factura(Integer.parseInt(jTextField2.getText()), "YR", numar,0,null ); e_i=null; /* comand SQL utilizat pentru determinarea CNP-ului delegatului care va nsoi marfa */ String cnp_delegat=""; sql_statement=""; sql_statement="select cnp from delegati where delegat='"+ jComboBox2.getSelectedItem().toString() +"'"; try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s1 = c.createStatement(); ResultSet r = s1.executeQuery(sql_statement); // determinarea CNP-ului while (r.next()) { cnp_delegat=r.getString("CNP"); }

87

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

r.close(); s1.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } /* ntregistrarea datelor n tabela livrri din Figura 2.25 se va folosi o instan a clasei livrri */ livrari l=new livrari(); l.inregistrare_livrare( jFormattedTextField1.getText(),Integer.parseInt(jTextField1.getText()), Integer.parseInt(jTextField2.getText()), jTextField5.getText(), Integer.parseInt(jTextField4.getText()), Integer.parseInt(jTextField3.getText()), cnp_delegat, Integer.parseInt(jComboBox1.getSelectedItem().toString()) ); l=null; jTextField1.setText(""); jTextField2.setText(""); jTextField3.setText(""); jTextField4.setText(""); jTextField5.setText(""); jFormattedTextField1.setText(""); jComboBox1.removeAllItems(); jComboBox2.removeAllItems();this.hide(); } // anularea datelor introduse n fereastr void jButton2_actionPerformed(ActionEvent e) { jTextField1.setText(""); jTextField2.setText(""); jTextField3.setText(""); jTextField4.setText(""); jTextField5.setText(""); jFormattedTextField1.setText(""); } /* revenirea la fereastra principal tergerea textelor din zonele de editare i a elementelor listelor derulante*/ void jButton3_actionPerformed(ActionEvent e) { jTextField1.setText(""); jTextField2.setText(""); jTextField3.setText(""); jTextField4.setText(""); jTextField5.setText(""); jFormattedTextField1.setText(""); jComboBox1.removeAllItems(); jComboBox2.removeAllItems(); this.hide(); } }
class d_livrare_this_componentAdapter extends java.awt.event.ComponentAdapter { d_livrare adaptee; d_livrare_this_componentAdapter(d_livrare adaptee) { this.adaptee = adaptee;

88

Aplicaii cu baze de date n JBuilder


} public void componentShown(ComponentEvent e) { adaptee.this_componentShown(e); } } class d_livrare_jComboBox1_actionAdapter implements java.awt.event.ActionListener { d_livrare adaptee; d_livrare_jComboBox1_actionAdapter(d_livrare adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jComboBox1_actionPerformed(e); } } class d_livrare_jButton1_actionAdapter implements java.awt.event.ActionListener { d_livrare adaptee; d_livrare_jButton1_actionAdapter(d_livrare adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton1_actionPerformed(e); } } class d_livrare_jButton2_actionAdapter implements java.awt.event.ActionListener { d_livrare adaptee; d_livrare_jButton2_actionAdapter(d_livrare adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton2_actionPerformed(e); } } class d_livrare_jButton3_actionAdapter implements java.awt.event.ActionListener { d_livrare adaptee; d_livrare_jButton3_actionAdapter(d_livrare adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton3_actionPerformed(e); } }

n fereastra din Figura 2.28 se alege numrul dispoziiei de livrare ce urmeaz a fi emis.

Figura 2.28 - Generarea documentului Dispoziie de livrare


89

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

Figura 2.29 - Dispoziie de livrare


90

Aplicaii cu baze de date n JBuilder

Din lista derulant se selecteaz numrul corespunztor, cu un clic asupra butonului de comand Dispoziie de livrare, se va genera un document html ce va conine dispoziia de livrare. Un astfel de document este prezentat n Figura 2.29. Codul de program utilizat pentru obinerea dispoziiilor de livrare, corespunztor Figurii 2.28, este urmtorul: package export_de_produse;
import java.awt.*; import java.awt.event.*; import javax.swing.*; import com.borland.jbcl.layout.*; import java.sql.*; import java.io.PrintWriter; import java.io.FileWriter; import java.io.IOException; public class v_dispozitie_de_livrare extends JFrame { JPanel contentPane; YLayout xYLayout1 = new XYLayout(); JLabel jLabel1 = new JLabel(); JComboBox jComboBox1 = new JComboBox(); JButton jButton1 = new JButton(); JButton jButton2 = new JButton(); //Construct the frame public v_dispozitie_de_livrare() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); jLabel1.setText("Numar dispozitie de livrare"); contentPane.setLayout(xYLayout1); this.setSize(new Dimension(615, 87)); this.setTitle("Dispozitia de livrare"); this.addComponentListener(new v_dispozitie_de_livrare_this_componentAdapter(this)); jButton1.setText("Dispozitie de livrare"); jButton1.addActionListener(new v_dispozitie_de_livrare_jButton1_actionAdapter(this)); jButton2.setText("Revenire"); jButton2.addActionListener(new v_dispozitie_de_livrare_jButton2_actionAdapter(this)); contentPane.add(jLabel1, new XYConstraints(20, 25, 138, 20)); contentPane.add(jComboBox1, new XYConstraints(173, 25, 101, 20)); contentPane.add(jButton1, new XYConstraints(322, 25, 139, 20)); contentPane.add(jButton2, new XYConstraints(485, 25, 124, 20)); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0);

91

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder
} }

/* metod utilizat pentru adugarea numerelor dispoziiilor de livrare n lista derulant */ void this_componentShown(ComponentEvent e) { /* comand SQL utilizat pentru adugarea numerelor dispoziiilor de livrare */ String sql_statement; sql_statement="select NrDoc from livrari"; //executarea comenzii SQL try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s1 = c.createStatement(); ResultSet r = s1.executeQuery(sql_statement); // adugarea elementelor n lista derulant while (r.next()) { jComboBox1.addItem(r.getString("NrDoc") ); jComboBox1.setSelectedIndex(-1); } r.close(); s1.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } } /* metod utilizat pentru generarea documentelor html ce conin dispoziiile de livrare */ void jButton1_actionPerformed(ActionEvent e) { /* comand SQL ce conine datele ce apar n dispoziia de livrare: numr document, data ntocmirii dispoziiei de livrare, data expedierii mrfii, denumirea

92

Aplicaii cu baze de date n JBuilder

clientului, numrul contractului, precum i numele i datele delegatului */ String sql_statement=""; sql_statement="SELECT distinct Livrari.Nrdoc as nd, Livrari.Dataintocm as di, "+ "Contracte.Dataexp as de, Clienti.Dencl as cl, Delegati.Delegat as del, "+ "Delegati.SeriaBI as sbi, Delegati.NrBI as nbi, Delegati.Emis as e, "+ "Contracte.Nrcontr as ncontr FROM (Delegati INNER JOIN Livrari ON "+ "Delegati.CNP=Livrari.CNP) INNER JOIN (Clienti INNER JOIN Contracte "+ "ON Clienti.Codcl=Contracte.Codcl) ON Livrari.Nrcontr=Contracte.Nrcontr "+ "where Livrari.Nrdoc="+jComboBox1.getSelectedItem().toString(); // executarea comenzii SQL i generarea codului html String cod_html=""; try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s1 = c.createStatement(); ResultSet r = s1.executeQuery(sql_statement); // antetul documentului html i datele furnizorului cod_html="<html><head><title>Dispozitie de livrare</title><body> "+ "<table border=\"1\" width=\"77%\"> " + "<tr> <td width=\"100%\">"+ "<table width=\"100%\">"+ "<tr>"+ "<td><p align=left><b><font size=\"4\">UNITATEA: </b>"+ " S.C. EURO-CHARCOAL S.R.L., "+"Nr. 20, Tomesti, Jud. Timis</font>"+ " </p></td></tr></table>"+ "<BR><BR>"+ "<table width=\"100%\">"+ "<tr>"+ "<td >"+ "<p align=\"center\"><b><font size=\"5\">DISPOZITIE DE LIVRARE "+ "</font></b></p></td></tr></table>"+ "<BR><BR>"; //afiarea datelor dispoziiei de livrare while (r.next()) { // afiarea numrului documentului i a datei ntocmirii String nr_docum=r.getString("nd"); cod_html=cod_html+ "<table width=\"100%\">"+
93

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

"<tr>"+ "<td width=\"33%\">"+ "<p style=\"word-spacing: 0; line-height: 150%; border-left-style:"+ "groove; border-right-style: groove; border-top-style: groove;"+ " margin-left: 200; margin-right: 200; margin-top: 0; margin-bottom: 0; "+ " padding-top: 0\">&nbsp; <b> Nr. </b>&nbsp;"+nr_docum+"</p>"+ " <p style=\"word-spacing: 0; line-height: 150%; border-left-style: groove; "border-right-style: groove; border-bottom-style: groove; margin-left: 200; "margin-right: 200; margintop: 0; margin-bottom: 0; padding-top: "+ "0\">&nbsp; <b> Data: </b> &nbsp;"+r.getDate("di")+"</p>"+ "</td></tr></table>"+ // afiarea datelor delegatului (numele, CI-seria, numrul i instituia emitent) "<br><br>"+ "<table><tr>"+ "<td width=\"100%\" >"+ "<p style=\"margin-left: 100\">Veti elibera produsele de mai jos catre "+r.getString("cl")+"</p>"+ "<p style=\"margin-left: 100\">prin delegatul&nbsp;"+ r.getString("del")+ "&nbsp;&nbsp; cu delegatia nr. &nbsp; </p>"+ "<p style=\"margin-left: 100\">Buletinul/cartea de identitate&nbsp; "+ "seria:&nbsp;"+r.getString("sbi") + "&nbsp; nr.&nbsp;"+ r.getString("nbi") +"&nbsp; eliberat(a) de:&nbsp;" +r.getString("e") +"</p>"; cod_html=cod_html+ "</td></tr></table>"+ "</td></tr><p>&nbsp;</p>"+ //afiarea produselor prevzute n contract "<tr><td width=\"100%\"><table border=\"1\" width=\"100%\" >"+ "<tr><td width=\"8%\"><b>Nr.crt.</b></td><td width=\"20%\"><b>+ "Denumire produs</b></td>"+"<td width=\"13%\"><b>U.M.</b></td>"+ "<td width=\"27%\"><b>Cantitate</b></td>"+ "<td width=\"32%\"><b>Pret unitar (fara T.V.A.)</b></td></tr>"; /*comand SQL utilizat pentru determinarea datelor produselor corespunztoare unui anumit contract denumirea, unitatea de msur, cantitatea i preul unitar*/ String sql_statement2="Select Produse.Denpr as dp, Produse.UM as umas, "+ "Produse.Pret as p, Date_contract.Cant as c From Produse INNER JOIN "+ "Date_contract ON Produse.Codpr = Date_contract.Codpr where"+ "Date_contract.Nrcontr ="+r.getString("ncontr"); // executarea comenzii SQL try {
94

Aplicaii cu baze de date n JBuilder

String dbURL1 = "jdbc:odbc:evid_export"; String user1 = ""; String password1 = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c1 = DriverManager.getConnection(dbURL1, user1, password1); Statement s2 = c1.createStatement(); ResultSet r1 = s2.executeQuery(sql_statement2); /* variabila j este utilizat pentru determinarea numrului curent corespunztor fiecrui produs ce va fi afiat n dispoziia de livrare*/ int j=1; while (r1.next()) { cod_html=cod_html+"<tr><td width=\"8%\">"+j+"</td><td "+ "width=\"20%\">" +r1.getString("dp")+"</td>"+ "<td width=\"13%\">"+r1.getString("umas")+"</td><td "+ "width=\"27%\">" +r1.getString("c")+"</td>"+ "<td width=\"32%\">"+r1.getString("p")+"</td></tr>>"; j++; } r1.close(); s2.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } cod_html=cod_html+"</table<BR><BR>"+ /* afiarea datelor finale ale dispoziiei de livrare - Semntura, Dispus livrarea, Gestionar, Primitor */ "<tr><td>"+ "<table border=\"1\" width=\"100%\">"+ "<tr><td width=\"25%\"><b>Semnatura</b></td><td width=\"25%\">"+ "<b>Dispus livrarea</b></td><td width=\"25%\"><b>Gestionar</b></td>"+ "<td width=\"25%\"><b>Primitor</b></td></tr><tr><td width=\"25%\">"+ "&nbsp;</td><td width=\"25%\">&nbsp;</td><td width=\"25%\"> &nbsp; "+ "</td><td width=\"25%\">&nbsp;</td></tr></table></td></tr>"+ "</table></td></tr>"; } r.close(); s1.close();
95

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

} catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } // tag-urile de final ale codului html cod_html=cod_html+ "</table></body></html>"; //crearea fiierului html try{ PrintWriter fisier_iesire=new PrintWriter(new FileWriter("dispozitie_de_livrare.html"), true); fisier_iesire.println(cod_html); fisier_iesire.close(); } catch (IOException t){ System.out.println("eroare scriere fisier"); } } // revenirea la fereastra iniial void jButton2_actionPerformed(ActionEvent e) { this.hide(); } }
class v_dispozitie_de_livrare_jButton1_actionAdapter implements java.awt.event.ActionListener { v_dispozitie_de_livrare adaptee; v_dispozitie_de_livrare_jButton1_actionAdapter(v_dispozitie_de_livrare adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton1_actionPerformed(e); } } class v_dispozitie_de_livrare_this_componentAdapter extends java.awt.event.ComponentAdapter { v_dispozitie_de_livrare adaptee; v_dispozitie_de_livrare_this_componentAdapter(v_dispozitie_de_livrare adaptee) { this.adaptee = adaptee; } public void componentShown(ComponentEvent e) { adaptee.this_componentShown(e);

96

Aplicaii cu baze de date n JBuilder


} } class v_dispozitie_de_livrare_jButton2_actionAdapter implements java.awt.event.ActionListener { v_dispozitie_de_livrare adaptee; v_dispozitie_de_livrare_jButton2_actionAdapter(v_dispozitie_de_livrare adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton2_actionPerformed(e); } }

n fereastra din Figura 2.30 se alege numrul facturii ce urmeaz a fi emis. Din lista derulant se selecteaz numrul corespunztor, cu un clic asupra butonului de comand Factura, se va genera un document html ce va conine factura. Un astfel de document este prezentat n Figura 2.31.

Figura 2.30 - Generarea facturilor Codul de program utilizat pentru obinerea dispoziiilor de livrare, corespunztor Figurii 2.30, este urmtorul: package export_de_produse; import java.awt.*;
import java.awt.event.*; import javax.swing.*; import com.borland.jbcl.layout.*; import java.sql.*; import java.io.PrintWriter; import java.io.FileWriter; import java.io.IOException; public class v_factura extends JFrame { JPanel contentPane; XYLayout xYLayout1 = new XYLayout(); JLabel jLabel1 = new JLabel(); JComboBox jComboBox1 = new JComboBox(); JButton jButton1 = new JButton(); JButton jButton2 = new JButton(); //Construct the frame public v_factura() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } }

97

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

Figura 2.31 - Exemplu de factur

98

Aplicaii cu baze de date n JBuilder


//Component initialization private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); jLabel1.setText("Numar factura"); contentPane.setLayout(xYLayout1); this.setSize(new Dimension(525, 95)); this.setTitle("Frame Title"); this.addComponentListener(new v_factura_this_componentAdapter(this)); jButton1.setText("Factura"); jButton1.addActionListener(new v_factura_jButton1_actionAdapter(this)); jButton2.addActionListener(new v_factura_jButton2_actionAdapter(this)); jButton2.setText("Revenire"); contentPane.add(jLabel1, new XYConstraints(20, 25, 90, 20)); contentPane.add(jComboBox1, new XYConstraints(126, 25, 123, 20)); contentPane.add(jButton1, new XYConstraints(269, 25, 124, 20)); contentPane.add(jButton2, new XYConstraints(422, 22, 89, 24)); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } }

// metod utilizat pentru adugarea numerelor facturilor n lista derulant void this_componentShown(ComponentEvent e) { // comand SQL utilizat pentru adugarea numerelor facturilor String sql_statement; sql_statement="select Nrfact from Evid_incasari"; // executarea comenzii SQL try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s1 = c.createStatement(); ResultSet r = s1.executeQuery(sql_statement); // adugarea elementelor n lista derulant while (r.next()) { jComboBox1.addItem(r.getString("Nrfact") ); jComboBox1.setSelectedIndex(-1); } r.close(); s1.close(); } catch (ClassNotFoundException a) { // Could not find the driver }
99

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

catch (SQLException a) { // Could not connect to the database } } // metod utilizat pentru generarea documentelor html ce conin facturile void jButton1_actionPerformed(ActionEvent e) { // tag-urile de nceput ale documentului html String cod_html="<html><head><title>Factura</title><body> "; cod_html=cod_html+"<table border=\"1\" width=\"100%\"><tr><td"+ "width=\"100%\"><table width=\"100%\"><tr>"; //comand SQL utilizat pentru a determina seria i numrul facturii selectate String sql_statement=""; sql_statement="select * from evid_incasari where nrfact="+ jComboBox1.getSelectedItem().toString(); // executarea comenzii SQL try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s = c.createStatement(); ResultSet r = s.executeQuery(sql_statement); // afiarea numrului i seriei facturii while (r.next()) { cod_html=cod_html+"<td width=\"100%\">&nbsp;</td> <td width=\"15%\">"+ "<b><font size=4>Seria </font></b></td><td width=\"15%\">"+ r.getString("Seria") +"</td><td width=\"15%\"><b><font size=4>Nr. "+ " </font></b></td><td width=\"15%\">"+r.getString("Numar")+"</td><td "+ width=\"15%\">&nbsp;</td>"; } r.close(); s.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) {
100

Aplicaii cu baze de date n JBuilder

// Could not connect to the database } cod_html=cod_html+"</tr>"+ "<tr>"+ "<td width=\"100%\" colspan=6>&nbsp;"+ "<table width=\"100%\">"+ "<tr>"+ "<td width=\"33%\">"; // comand SQL utilizat pentru afiarea datelor furnizorului sql_statement="select * from Unitatea"; try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s = c.createStatement(); ResultSet r = s.executeQuery(sql_statement); /* afiarea datelor furnizorului denumire, numrul de nregistrare la Registrul comerului, CIF-ul, sediul, judeul, banca, contul, capitalul social, adresa de email, telefonul */ while (r.next()) { cod_html=cod_html+"<p style=\"line-height: 100%; word-spacing: 0; "+ " margin: 0\"><font size=\"2\"><b>Furnizor</b>:"+ // denumirea furnizorului r.getString("Denumire") + "</font></p><p style=\"line-height: 100%;"+ "word-spacing: 0; margin: 0\"><font size=\"2\"><b>Nr. de "+ "inmatriculare in Registrul comertului/anul</b>: "+ // numrul de nmatriculare la Registrul comerului r.getString("Nr_inmat_reg_com") +"</font></p>"+ "<p style=\"line-height: 100%; word-spacing: 0; margin: 0\"><font "+ // codul fiscal "size=\"2\"> <b>Codul fiscal</b>: "+r.getString("CIF")+"</font></p>"+ "<p style=\"line-height: 100%; word-spacing: 0; margin: 0\"><font "+ // sediul "size=\"2\"><b>Sediul</b>: "+r.getString("Sediul")+"</font></p>"+ "<p style=\"line-height: 100%; word-spacing: 0; margin: 0\"><font "+
101

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

// judeul " size=\"2\"><b>Judetul</b>: "+r.getString("Judetul")+"</font></p>"+ "<p style=\"line-height: 100%; word-spacing: 0; margin: 0\"><font "+ "size=\"2\"><b>Contul</b>: "+r.getString("Contul")+"</font></p>"+ "<p style=\"line-height: 100%; word-spacing: 0; margin: 0\"><font "+ // banca "size=\"2\"><b>Banca</b>: "+r.getString("Banca")+"</font></p>"+ "<p style=\"line-height: 100%; word-spacing: 0; margin: 0\"><font "+ // capitalul social "size=\"2\"><b>Capital social</b>: "+r.getString("Capital_social")+ "</font></p><p style=\"line-height: 100%; word-spacing: 0; margin: "+ // adresa de e-mail "0\"><font size=\"2\"><b>Email</b>: "+r.getString("Email")+ "</font></p><p style=\"line-height: 100%; word-spacing: 0; margin: "+ // telefonul "0\"><font size=\"2\"><b>Telefon/Fax</b>: "+r.getString("Telefon")+ "</font></p>"; } r.close(); s.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } // denumirea documentului: FACTURA cod_html=cod_html+"</td><td width=\"33%\"><p align=\"center\"><b><font "+ "size=\"4\">&nbsp;</font></b></p><p align=\"center\"><b><font size=\"6\">"+ "FACTURA</font></b></p><p align=\"center\">&nbsp;</p><table border="+ "\"1\" width=\"100%\"><tr><td width=\"100%\">"; // comand SQL utilizat pentru determinarea datei ntocmirii facturii sql_statement="select nrfact, dataintocm from livrari where nrfact="+ jComboBox1.getSelectedItem().toString();

102

Aplicaii cu baze de date n JBuilder

// executarea comenzii SQL try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s = c.createStatement(); ResultSet r = s.executeQuery(sql_statement); // afiarea datei ntocmirii facturii while (r.next()) { cod_html=cod_html+"<p style=\"word-spacing: 0; line-height: 100%; margin: "+ 0\"><font size=\"2\"><b>Nr.facturii</b>:"+r.getString("nrfact")+"</font></p>"+ "<p style=\"word-spacing: 0; line-height: 100%; margin: 0\"><font size=\"2\">"+ "<b>Data (anul, luna, ziua)</b>:"+r.getDate("dataintocm")+"</font></p>"; } r.close(); s.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } cod_html=cod_html+"<p style=\"line-height: 100%; word-spacing: 0; margin: "+ "0\"><font size=\"2\"><b>Nr. avizului de insotire a marfii</b>:</font></p>"+ "<p style=\"line-height: 100%; word-spacing: 0; margin: 0\"><font size=\"1\"> "+ " (daca este cazul)</font></td></tr></table>"+ "<p>&nbsp;</p></td><td width=\"34%\">"; /* comand SQL utilizat pentru afiarea datelor clientului denumirea, adresa, ara, contul, banca, adresa de e-mail i telefonul */ sql_statement="SELECT Clienti.Dencl as d, Clienti.Adrcl as a, Clienti.Tara as t, "+ "Clienti.Contul as c, Clienti.Banca as b, Clienti.Email as e, Clienti.Telefon as te "+ "FROM (Clienti INNER JOIN Contracte ON Clienti.Codcl = Contracte.Codcl) "+ "INNER JOIN Livrari ON Contracte.Nrcontr = Livrari.Nrcontr where"+ "livrari.nrfact="+ jComboBox1.getSelectedItem().toString(); try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = "";
103

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s = c.createStatement(); ResultSet r = s.executeQuery(sql_statement); while (r.next()) { // se afieaz denumirea clientului cod_html=cod_html+"<p style=\"line-height: 100%; word-spacing: 0; margin:"+ "+0\"><font size=\"2\"><b>Client</b>: "+r.getString("d")+"</font></p>"+ "<p style=\"line-height: 100%; word-spacing: 0; margin: 0\"><font size= "+ // se afieaz adresa clientului "\"2\"><b>Adresa</b>: "+ r.getString("a")+"</font></p>"+ "<p style=\"line-height: 100%; word-spacing: 0; margin: 0\"><font size="+ // se afieaz ara clientului "\"2\"><b>Tara</b>: "+r.getString("t")+"</font></p>"+ "<p style=\"line-height: 100%; word-spacing: 0; margin: 0\"><font size="+ // se afieaz contul clientului "\"2\"><b>Contul</b>: "+r.getString("c")+"</font></p>"+ "<p style=\"line-height: 100%; word-spacing: 0; margin: 0\"><font size="+ // se afieaz banca clientului "\"2\"><b>Banca</b>: "+r.getString("b")+"</font></p>"+ "<p style=\"line-height: 100%; word-spacing: 0; margin: 0\"><font size="+ // se afieaz adresa de e-mail a clientului "\"2\"><b>Email</b>: "+r.getString("e")+"</font></p>"+ "<p style=\"line-height: 100%; word-spacing: 0; margin: 0\"><font size="+ // se afieaz telefonul clientului "\"2\"><b>Telefon</b>: "+r.getString("te")+"</font></p>&nbsp;</td>"; } r.close(); s.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) {
104

Aplicaii cu baze de date n JBuilder

// Could not connect to the database } cod_html=cod_html+ "</tr></table></td></tr><tr><td width=\"100%\" "+ "colspan=6>&nbsp;</td></tr><tr><td width=\"100%\" colspan=6>"+ "<table border=\"1\" width=\"100%\"><tr>"; /* comand SQL ce se utilizeaz pentru afiarea urmtoarelor date: mijloc de transport, condiii de livrare, locul ncrcrii, locul descrcrii, data expedierii, modalitatea de plat, greutatea brut i greutatea net */ sql_statement="SELECT Contracte.Mijltr as m, Contracte.Condlivr as c, "+ "Livrari.Loculinc as li, Contracte.Loculdesc as ld, Contracte.Dataexp as d, "+ "Contracte.Modpl as mp, Livrari.GrB as gb, Livrari.GrN as gn FROM "+ "Contracte INNER JOIN Livrari ON Contracte.Nrcontr = Livrari.Nrcontr where "+ " livrari.nrfact="+jComboBox1.getSelectedItem().toString(); //executarea comenzii SQL try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s = c.createStatement(); ResultSet r = s.executeQuery(sql_statement); while (r.next()) { // afiarea mijlocului de transport cod_html=cod_html+"<td width=\"33%\"><font size=\"2\"><b>Mijloc de "+ "transport</b>: "+r.getString("m")+"</font></td><td width=\"33%\"><font "+ // afiarea condiiilor de livrare "size=\"2\"><b>Conditii de livrare</b>: "+r.getString("c")+"</font></td>"+ // afiarea locului ncrcrii "<td width=\"34%\"><font size=\"2\"><b>Locul incarcarii</b>: "+ r.getString("li")+"</font></td></tr><tr><td width=\"33%\"><font "+ // afiarea locului descrcrii "size=\"2\"><b>Locul descarcarii</b>: "+r.getString("ld")+"</font></td>"+ "<td width=\"33%\"><font size=\"2\"><b>Asigurarea incarcaturii</b>: "+ // afiarea datei expedierii
105

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

"</font></td><td width=\"34%\"><font size=\"2\"><b>Data expedierii</b>: "+ "r.getString("d")+"</font></td></tr><tr><td width=\"33%\"><font "+ "size=\"2\"><b>Cod marfa incarcata</b>:</font></td><td width=\"33%\">"+ "<font size=\"2\"><b>Marcare</b>:</font></td><td width=\"34%\"><font "+ "size=\"2\"><b>Nr. colet</b>:</font></td></tr><tr><td width=\"33%\">"+ // afiarea modului de plat "+<font size=\"2\"><b>Mod de plata</b>: "+r.getString("mp")+"</font></td>"+ // afiarea greutii brute "<td width=\"33%\"><font size=\"2\"><b>Greutatea bruta</b>: "+ r.getString("gb")+"</font></td><td width=\"34%\"><font size=\"2\"><b>"+ // afiarea greutii nete "Greutatea neta</b>: "+r.getString("gn")+"</font></td>"; } r.close(); s.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } /* pentru fiecare produs prevzut n contract, se vor afia: numrul curent, denumirea, unitatea de msur, cantitatea, preul unitar, valoarea i valoarea T.V.A.-n secvena urmtoare este prezentat antetul capului de tabel */ cod_html=cod_html+ "</tr></table></td></tr><tr><td width=\"100%\" "+ "colspan=6></td></tr><tr><td width=\"100%\" colspan=6><b>&nbsp; "+ "Cota T.V.A. 19%</b></td></tr></table></td></tr><tr><td width=\"100%\">"+ "<table border=\"1\" width=\"102%\"><tr><td width=\"7%\" align=\"center\">"+ "<b><font size=\"2\">Nr.crt.</font></b></td><td width=\"26%\" align="+ "\"center\"> <b><font size=\"2\">Denumirea produselor sau a serviciilor</font>"+ "</b></td><td width=\"10%\" align=\"center\"><b><font size=\"2\">U.M. "+ "</font></b></td><td width=\"12%\" align=\"center\"><b><font "+ "size=\"2\">Cantitatea</font></b></td><td width=\"16%\" align=\"center\">"+ "<b><font size=\"2\">Pret unitar (fara T.V.A.)</font></b></td>"<td width= "+ "\"13%\" align=\"center\"><b><font size=\"2\">Valoarea</font></b></td>"+ "<td width=\"19%\" align=\"center\"><b><font size=\"2\">Valoarea T.V.A. "+ "</font></b></td></tr><tr><td width=\"7%\" align=\"center\"><font size="+ "\"2\">0</font></td><td width=\"26%\" align=\"center\"><font size=\"2\">"+ "1</font></td><td width=\"10%\" align=\"center\"><font size=\"2\">2</font>"+
106

Aplicaii cu baze de date n JBuilder

"</td><td width=\"12%\" align=\"center\"><font size=\"2\">3</font></td>"+ "<td width=\"16%\" align=\"center\"><font size=\"2\">4</font></td>"+ "<td width=\"13%\" align=\"center\"><font size=\"2\">5(3x4)</font></td>"+ "<td width=\"19%\" align=\"center\"><font size=\"2\">6</font></td></tr>"; /* variabila i se utilizeaz pentru afiarea numrului curent corespunztor fiecrui produs; variabila v pentru calcularea valorii fiecrui produs, variabila v_tva pentru calcularea valorii T.V.A. a fiecrui produs, variabila s_v pentru calculul valorii totale, variabila s_v_tva pentru calculul valorii T.V.A. totale */ int i=0,s_v=0, v=0, v_tva=0, s_v_tva=0; /* comanda SQL utilizat pentru afiarea datelor corespunztoare produselor: numrul curent, denumirea, unitatea de msur, cantitatea, preul unitar, valoarea i valoarea T.V.A.*/ sql_statement="SELECT Produse.Denpr as d, Produse.UM as u, "+ "Date_contract.Cant as c, Produse.Pret as p, Date_contract.Cant* Produse.Pret "+ "as v, 0.19* Date_contract.Cant* Produse.Pret as v_TVA FROM Produse "+ "INNER JOIN ((Contracte INNER JOIN Livrari ON Contracte.Nrcontr = "+ "Livrari.Nrcontr) INNER JOIN Date_contract ON Contracte.Nrcontr = "+ "Date_contract.Nrcontr) ON Produse.Codpr = Date_contract.Codpr "+ " where livrari.nrfact="+jComboBox1.getSelectedItem().toString(); // executarea comenzii SQL try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s = c.createStatement(); ResultSet r = s.executeQuery(sql_statement); // afiarea datelor corespunztoare fiecrui produs while (r.next()) { i+=1;v = r.getInt("v"); s_v+=v; v_tva=r.getInt("v_TVA"); s_v_tva+=v_tva; cod_html=cod_html+ "<tr>"+ /* numrul curent, denumirea, unitatea de msur, cantitatea, preul unitar, Valoarea, Valoarea T.V.A..*/ "<td width=\"7%\">"+String.valueOf(i)+"</td>"+ "<td width=\"26%\">"+r.getString("d")+"</td>"+ "<td width=\"10%\">"+r.getString("u")+"</td>"+ "<td width=\"12%\">"+r.getString("c")+"</td>"+ "<td width=\"16%\">"+r.getString("p")+"</td>"+
107

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

"<td width=\"13%\">"+String.valueOf(v)+"</td>"+ "<td width=\"19%\">"+String.valueOf(v_tva)+"</td>"+ "</tr>"; } r.close(); s.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } // semntura i tampila furnizorului cod_html=cod_html+ "</table></td></tr><tr><td>&nbsp</td></tr><tr>"+ "<td width=\"100%\"><table border=\"1\" width=\"100%\"><tr>"+ "<td width=\"16%\" rowspan=3><b><font size=\"2\">Semnatura si stampila "+ "furnizorului</font></b><p>&nbsp;</p><p>&nbsp;</p></td>"+ // date privind expediia "<td width="+ "\"24%\" rowspan=3><p style=\"word-spacing: 0; line-height: "+ " 100%; margin: 0\"><font size=\"2\"><b>Date privind expeditia</b>:</font></p>"; /* comand SQL ce se utilizeaz pentru afiarea datelor delegatului: numele, CNPul, seria, numru, i instituia emitent a CI */ sql_statement="SELECT Delegati.Delegat as d, Delegati.CNP as c, "+ " Delegati.SeriaBI as s, Delegati.NrBI as n, Delegati.Emis as e FROM Delegati "+ " INNER JOIN Livrari ON Delegati.CNP = Livrari.CNP where livrari.nrfact=" + jComboBox1.getSelectedItem().toString(); // executarea comenzii SQL try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s = c.createStatement(); ResultSet r = s.executeQuery(sql_statement); // afiarea datelor while (r.next()) {
108

Aplicaii cu baze de date n JBuilder

cod_html=cod_html+ "<p style=\"word-spacing: 0; line-height: 100%; "+ "margin: 0\"><font size=\"2\"><b>Numele delegatului</b>: "+ r.getString("d") + "</font></p><p style=\"word-spacing: 0; line-height: "+ "100%; margin: 0\"><font size=\"2\"><b>CNP</b>:"+r.getString("c")+ "</font></p><p style=\"word-spacing: 0; line-height: 100%; margin: "+ "0\"><b><font size=\"2\">Buletinul/Cartea de Identitate</font></b></p>"+ "<p style=\"word-spacing: 0; line-height: 100%; margin: 0\"> "+ "<font size=\"2\"><b>Seria</b>: "+r.getString("s")+"&nbsp;"+ "<b>nr. "+r.getString("n")+"</b>:&nbsp;&nbsp; <b>eliberat(a)</b>:"+ r.getString("e")+"</font></p>"; } r.close(); s.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } cod_html=cod_html+"<p style=\"word-spacing: 0; line-height: 100%; margin: "+ "0\"><font size=\"2\"><b>Expedierea s-a efectuat in prezenta</b> <b>noastra la "data de....................ora.........</b></font></p><p style=\"word-spacing: 0; line-"+ "height: 100%; margin: 0\"><b><font size=\"2\">Semnaturile</font></b></p>"+ // afiarea totalurilor (total valoare, total valoare T.V.A. i total plat) // afiarea valorii totale i a valorii T.V.A. totale "<p>&nbsp;</p></td><td width=\"20%\" rowspan=2><p style=\"word-"+ "spacing: 0; line-height: 100%; margin: 0\"><b><font size=\"2\">Total "+ "din care accize:</font></b></p></td><td width=\"20%\">"+ String.valueOf(s_v)+"</td><td width=\"20%\">"+ String.valueOf(s_v_tva)+ "</td></tr><tr><td width=\"20%\">&nbsp;</td><td width=\"20%\"><p align="+ "\"center\"><font size=\"2\">x</font></p></td></tr><tr><td width=\"20%\"> "+ "<b><font size=\"2\">Semnatura de primire</font></b></td><td width=\"20%"+ // afiarea plii totale "+\" colspan=2><b><font size=\"4\">Total plata (col.5+col.6):</b>&nbsp;"+ String.valueOf(v+v_tva)+"</font></td></tr></table></td></tr></table>"; //crearea fiierului html try{ PrintWriter fisier_iesire=new PrintWriter(new FileWriter("factura.html"), true);
109

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

fisier_iesire.println(cod_html); fisier_iesire.close(); } catch (IOException t){ System.out.println("eroare scriere fisier"); } } }


class v_factura_this_componentAdapter extends java.awt.event.ComponentAdapter { v_factura adaptee; v_factura_this_componentAdapter(v_factura adaptee) { this.adaptee = adaptee; } public void componentShown(ComponentEvent e) { adaptee.this_componentShown(e); } } class v_factura_jButton1_actionAdapter implements java.awt.event.ActionListener { v_factura adaptee; v_factura_jButton1_actionAdapter(v_factura adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton1_actionPerformed(e); } } class v_factura_jButton2_actionAdapter implements java.awt.event.ActionListener { v_factura adaptee; v_factura_jButton2_actionAdapter(v_factura adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton2_actionPerformed(e); } }

Pentru nregistrarea ncasrilor se utilizeaz fereastra din Figura 2.32. Se selecteaz din lista derulant numrul facturii pentru care se efectueaz plata. Cu ajutorul unei componente jdbTable se afieaz datele clientului, iar n zonele de editare se introduce data la care s-a efectuat plata i valoarea ncasat. n Figura 2.33 este prezentat n faza de proiectare fereastra din Figura 2.32. Programul utilizat este urmtorul:
package export_de_produse;
import java.awt.*; import java.awt.event.*; import javax.swing.*; import com.borland.jbcl.layout.*;

110

Aplicaii cu baze de date n JBuilder


import com.borland.dx.sql.dataset.*; import com.borland.dx.sql.dataset.*; import com.borland.dx.dataset.*; import java.sql.*; import java.lang.*; import com.borland.dbswing.*;

import export_de_produse.produs;
public class i_incasare extends JFrame { JPanel contentPane; XYLayout xYLayout1 = new XYLayout(); JLabel jLabel1 = new JLabel(); JComboBox jComboBox1 = new JComboBox(); JPanel jPanel1 = new JPanel(); XYLayout xYLayout2 = new XYLayout(); JLabel jLabel2 = new JLabel(); Database database1 = new Database(); QueryDataSet queryDataSet1 = new QueryDataSet();JScrollPane jScrollPane1 = new JScrollPane(); JdbTable jdbTable1 = new JdbTable(); JLabel jLabel3 = new JLabel(); JFormattedTextField jFormattedTextField1 = new JFormattedTextField(); JLabel jLabel4 = new JLabel(); JTextField jTextField1 = new JTextField(); JLabel jLabel5 = new JLabel(); JButton jButton1 = new JButton(); JButton jButton2 = new JButton(); //Construct the frame public i_incasare() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } }

Figura 2.32 - nregistrarea ncasrilor


//Component initialization private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); jLabel1.setText("Numar factura"); contentPane.setLayout(xYLayout1); this.setSize(new Dimension(595, 247)); this.setTitle("Inregistrare incasare"); this.addComponentListener( new i_incasare_this_componentAdapter(this));

111

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

Figura 2.33 - nregistrarea ncasrilor fereastra n faza de proiectare


112

Aplicaii cu baze de date n JBuilder


contentPane.addComponentListener(new i_incasare_contentPane_componentAdapter(this)); jPanel1.setBorder(BorderFactory.createLineBorder(Color.black)); jPanel1.setLayout(xYLayout2); jLabel2.setText("Date client");

/* pentru afiarea datelor clientului corespunztor facturii selectate, se va utiliza o component jdbTable; pentru aceasta se vor urma cei trei pai specificai n continuare:*/ /* 1- se realizeaz conexiunea la baza de date, cu ajutorul unei componente database */
database1.setConnection( new com.borland.dx.sql.dataset.ConnectionDescriptor("jdbc:odbc:evid_export", "", "", false, "sun.jdbc.odbc.JdbcOdbcDriver"));

/* 2- se utilizeaz o component queryDataSet pentru a preciza comanda SQL pentru care se va afia rezultatul */
queryDataSet1.setQuery(new com.borland.dx.sql.dataset.QueryDescriptor(database1, "SELECT Contracte.Dataexp, Contracte.Termenpl, Evid_incasari.Nrfact, Clienti.Codcl, Clienti.Dencl, " + "Evid_incasari.Incasari, Evid_incasari.Datainc\n FROM Evid_incasari, Clienti INNER JOIN " + "Contracte ON Clienti.Codcl = Contracte.Codcl where Evid_incasari.nrfact=-1; ", null, true, "+ "Load.ALL)); jLabel3.setText("Data incasarii");

/* 3 la proprietatea dataSet a componentei jdbTable se alege componenta queryDataSet1 */


jdbTable1.setDataSet(queryDataSet1); jFormattedTextField1.setText(""); jLabel4.setText("Incasare"); jTextField1.setText(""); jLabel5.setText("(\"MM/dd/yy\")"); jButton1.setText("Inregistrare"); jButton1.addActionListener(new i_incasare_jButton1_actionAdapter(this)); jButton2.setText("Revenire"); jButton2.addActionListener(new i_incasare_jButton2_actionAdapter(this)); jComboBox1.addActionListener(new i_incasare_jComboBox1_actionAdapter(this)); contentPane.add(jLabel1, new XYConstraints(12, 15, 116, 22)); contentPane.add(jComboBox1, new XYConstraints(105, 15, 136, 22)); contentPane.add(jPanel1, new XYConstraints(16, 50, 567, 155)); jPanel1.add(jLabel2, new XYConstraints(11, 3, 81, 22)); jPanel1.add(jScrollPane1, new XYConstraints(8, 21, 547, 69)); jPanel1.add(jLabel3, new XYConstraints(12, 98, 86, 22)); jPanel1.add(jFormattedTextField1, new XYConstraints(83, 98, 130, 22)); jPanel1.add(jLabel4, new XYConstraints(250, 98, 80, 22)); jPanel1.add(jTextField1, new XYConstraints(314, 98, 130, 22)); jPanel1.add(jLabel5, new XYConstraints(13, 113, 81, 27)); contentPane.add(jButton1, new XYConstraints(180, 216, 110, 22)); contentPane.add(jButton2, new XYConstraints(300, 216, 110, 22)); jScrollPane1.getViewport().add(jdbTable1, null); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } }

113

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

void this_componentShown(ComponentEvent e) { String sql_statement; // comanda SQL utilizat pentru afiarea n lista derulant a numrului fiecrei facturi sql_statement="select nrfact from evid_incasari"; // executarea comenzii SQL try { String dbURL = "jdbc:odbc:evid_export"; String user = ""; String password = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbURL, user, password); Statement s1 = c.createStatement(); ResultSet r = s1.executeQuery(sql_statement); // adugarea elementelor n lista derulant while (r.next()) { jComboBox1.addItem(r.getString("Nrfact") ); } r.close(); s1.close(); } catch (ClassNotFoundException a) { // Could not find the driver } catch (SQLException a) { // Could not connect to the database } jComboBox1.setSelectedIndex(-1); } /* n momentul selectrii unui numr de factur din lista derulant, se vor afia cu ajutorul componentei jdbTable1 datele clientului corespunztor facturii selectate */ void jComboBox1_actionPerformed(ActionEvent e) { String sql_statement=""; if(jComboBox1.getSelectedIndex()!=-1){ sql_statement ="SELECT Contracte.Dataexp, Contracte.Termenpl, " + "Evid_incasari.Nrfact, Clienti.Codcl, Clienti.Dencl, Evid_incasari.Incasari, " + "Evid_incasari.Datainc FROM Evid_incasari, Clienti INNER JOIN Contracte" + "ON Clienti.Codcl = Contracte.Codcl where Evid_incasari.nrfact= "+ jComboBox1.getSelectedItem().toString();
114

Aplicaii cu baze de date n JBuilder

queryDataSet1.close(); queryDataSet1.setQuery(new com.borland.dx.sql.dataset.QueryDescriptor( database1, sql_statement, null, true, Load.ALL)); queryDataSet1.refresh(); } } // nregistrarea ncasrilor void jButton1_actionPerformed(ActionEvent e) { // se utilizeaz o instan a clasei eviden_ncasri evidenta_incasari e_i=new evidenta_incasari(); // se apeleaz metoda nregistrare ncasare e_i.inregistrare_incasare(Integer.parseInt(jComboBox1.getSelectedItem().toString( )), Integer.parseInt(jTextField1.getText()),jFormattedTextField1.getText() ); e_i=null; jTextField1.setText(""); jFormattedTextField1.setText(""); jComboBox1.removeAllItems(); this.hide(); } // revenirea la fereastra principal void jButton2_actionPerformed(ActionEvent e) { jTextField1.setText(""); jFormattedTextField1.setText(""); jComboBox1.removeAllItems(); this.hide(); } }
class i_incasare_this_componentAdapter extends java.awt.event.ComponentAdapter { i_incasare adaptee; i_incasare_this_componentAdapter(i_incasare adaptee) { this.adaptee = adaptee; } public void componentShown(ComponentEvent e) { adaptee.this_componentShown(e); } } class i_incasare_jComboBox1_actionAdapter implements java.awt.event.ActionListener { i_incasare adaptee; i_incasare_jComboBox1_actionAdapter(i_incasare adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jComboBox1_actionPerformed(e); } }

115

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder
class i_incasare_jButton1_actionAdapter implements java.awt.event.ActionListener { i_incasare adaptee; i_incasare_jButton1_actionAdapter(i_incasare adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton1_actionPerformed(e); } } class i_incasare_jButton2_actionAdapter implements java.awt.event.ActionListener { i_incasare adaptee; i_incasare_jButton2_actionAdapter(i_incasare adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton2_actionPerformed(e); } }

Pentru evidena ncasrilor se utilizeaz fereastra din Figura 2.34. Fereastra n faza de proiectare este prezentat n Figura 2.35. Programul utilizat este urmtorul:
package export_de_produse; import java.awt.*; import java.awt.event.*; import javax.swing.*; import com.borland.jbcl.layout.*; import com.borland.dx.sql.dataset.*; import com.borland.dbswing.*; import java.util.Calendar; import java.util.Date; public class v_incasari extends JFrame { JPanel contentPane; XYLayout xYLayout1 = new XYLayout(); Database database1 = new Database(); QueryDataSet queryDataSet1 = new QueryDataSet(); JScrollPane jScrollPane1 = new JScrollPane(); JdbTable jdbTable1 = new JdbTable(); JButton jButton1 = new JButton(); JButton jButton2 = new JButton(); JButton jButton3 = new JButton(); JButton jButton4 = new JButton(); //Construct the frame public v_incasari() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } }

116

Aplicaii cu baze de date n JBuilder

Figura 2.34 - Evidena ncasrilor


//Component initialization private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane();

// afiarea datelor cu ajutorul unei componente jdbTable // utilizarea unei componente database pentru conexiunea la baza de date
database1.setConnection(new com.borland.dx.sql.dataset.ConnectionDescriptor("jdbc:odbc:evid_export", "", "", false, "sun.jdbc.odbc.JdbcOdbcDriver"));

// utilizarea unei componente queryDataSet


queryDataSet1.setQuery(new com.borland.dx.sql.dataset.QueryDescriptor(database1, "SELECT Evid_incasari.Nrfact, Clienti.Dencl, Evid_incasari.Incasari, Evid_incasari.Datainc\n FROM "+ "Clienti INNER JOIN (Contracte INNER JOIN (Evid_incasari INNER JOIN Livrari ON "+ "Evid_incasari.Nrfact = Livrari.Nrfact) ON Contracte.Nrcontr = Livrari.Nrcontr) ON "+ "Clienti.Codcl = Contracte.Codcl where (Evid_incasari.Datainc Is Not Null) And "+ " (Evid_incasari.Datainc "<Contracte.Termenpl)\n", null, true, Load.ALL));

// utilizarea unei componente jdbTable


jdbTable1.setDataSet(queryDataSet1); contentPane.setLayout(xYLayout1); this.setSize(new Dimension(624, 219)); this.setTitle("Evidenta incasari"); jButton1.setText("Facturi achitate"); jButton1.addActionListener(new v_incasari_jButton1_actionAdapter(this)); jButton2.setText("Restantieri"); jButton2.addActionListener(new v_incasari_jButton2_actionAdapter(this)); Button3.setText("Ramas de achitat"); jButton3.addActionListener(new v_incasari_jButton3_actionAdapter(this)); jButton4.setText("Revenire"); jButton4.addActionListener(new v_incasari_jButton4_actionAdapter(this)); contentPane.add(jScrollPane1, new XYConstraints(16, 65, 593, 135)); contentPane.add(jButton1, new XYConstraints(17, 18, 120, 22)); contentPane.add(jButton2, new XYConstraints(160, 18, 120, 22)); contentPane.add(jButton3, new XYConstraints(300, 18, 120, 22)); contentPane.add(jButton4, new XYConstraints(445, 18, 120, 22)); jScrollPane1.getViewport().add(jdbTable1, null); }

//Overridden so we can exit when window is closed 117

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

Figura 2.35 - Evidena ncasrilor fereastra n faza de proiectare


118

Aplicaii cu baze de date n JBuilder protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } }

// metod utilizat pentru afiarea facturilor achitate void jButton1_actionPerformed(ActionEvent e) { String sql_statement=""; // comanda SQL utilizat pentru afiarea facturilor achitate sql_statement=" SELECT Evid_incasari.Nrfact, Clienti.Dencl, "+ "Evid_incasari.Incasari, Evid_incasari.Datainc FROM Clienti INNER JOIN "+ " (Contracte INNER JOIN (Evid_incasari INNER JOIN Livrari ON "+ "Evid_incasari.Nrfact = Livrari.Nrfact) ON Contracte.Nrcontr = Livrari.Nrcontr"+ ") ON Clienti.Codcl = Contracte.Codcl where (Evid_incasari.Datainc Is Not Null)"; // executarea comenzii SQL, utiliznd o component queryDataSet queryDataSet1.close(); queryDataSet1.setQuery(new com.borland.dx.sql.dataset.QueryDescriptor(database1, sql_statement, null, true, Load.ALL)); queryDataSet1.refresh(); } // metod utilizat pentru afiarea facturilor restante void jButton2_actionPerformed(ActionEvent e) { // determinarea datei curente Calendar cal=Calendar.getInstance(); int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH); int day = cal.get(Calendar.DAY_OF_MONTH); String data_curenta=String.valueOf(month)+"/"+String.valueOf(day)+"/"+ String.valueOf(year); // comanda SQL utilizat pentru afiarea facturilor restante String sql_statement=""; sql_statement=" SELECT Evid_incasari.Nrfact, Clienti.Dencl, "+ "Evid_incasari.Incasari, Evid_incasari.Datainc FROM Clienti INNER JOIN "+ "(Contracte INNER JOIN (Evid_incasari INNER JOIN Livrari ON "+ "Evid_incasari.Nrfact = Livrari.Nrfact) ON Contracte.Nrcontr = Livrari.Nrcontr "+
119

Aplicaii cu baze de date i structuri de date n Java, utiliznd mediul de programare JBuilder

") ON Clienti.Codcl = Contracte.Codcl where (Evid_incasari.Datainc Is Null) "+ "And (Contracte.Termenpl<#"+data_curenta+"#) "; // executarea comenzii SQL, utiliznd o component queryDataSet queryDataSet1.close(); queryDataSet1.setQuery(new com.borland.dx.sql.dataset.QueryDescriptor(database1, sql_statement, null, true, Load.ALL)); queryDataSet1.refresh(); } // metod utilizat pentru afiarea facturilor neachitate void jButton3_actionPerformed(ActionEvent e) { // determinarea datei curente Calendar cal=Calendar.getInstance(); int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH); int day = cal.get(Calendar.DAY_OF_MONTH); String data_curenta=String.valueOf(month)+"/"+String.valueOf(day)+"/"+ String.valueOf(year); // comanda SQL utilizat pentru afiarea facturilor neachitate String sql_statement=""; sql_statement=" SELECT Evid_incasari.Nrfact, Clienti.Dencl, "+ "Evid_incasari.Incasari, Evid_incasari.Datainc FROM Clienti INNER JOIN "+ " (Contracte INNER JOIN (Evid_incasari INNER JOIN Livrari ON "+ " Evid_incasari.Nrfact = Livrari.Nrfact) ON Contracte.Nrcontr = Livrari.Nrcontr"+ ") ON Clienti.Codcl = Contracte.Codcl where (Evid_incasari.Datainc Is Null) "+ " And (Contracte.Termenpl>=#"+data_curenta+"#) "; // executarea comenzii SQL queryDataSet1.close(); queryDataSet1.setQuery(new com.borland.dx.sql.dataset.QueryDescriptor(database1, sql_statement, null, true, Load.ALL)); queryDataSet1.refresh(); } // revenirea la fereastra principal void jButton4_actionPerformed(ActionEvent e) { this.hide(); } }
class v_incasari_jButton1_actionAdapter implements java.awt.event.ActionListener { v_incasari adaptee;

120

Aplicaii cu baze de date n JBuilder


v_incasari_jButton1_actionAdapter(v_incasari adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton1_actionPerformed(e); } } class v_incasari_jButton2_actionAdapter implements java.awt.event.ActionListener { v_incasari adaptee; v_incasari_jButton2_actionAdapter(v_incasari adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton2_actionPerformed(e); } } class v_incasari_jButton3_actionAdapter implements java.awt.event.ActionListener { v_incasari adaptee; v_incasari_jButton3_actionAdapter(v_incasari adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton3_actionPerformed(e); } } class v_incasari_jButton4_actionAdapter implements java.awt.event.ActionListener { v_incasari adaptee; v_incasari_jButton4_actionAdapter(v_incasari adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton4_actionPerformed(e); } }

121

S-ar putea să vă placă și