Advertisement
Guest User

SQLite & Java Swing

a guest
Nov 12th, 2017
563
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.46 KB | None | 0 0
  1. package com.robertsroom.java;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Dimension;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7. import java.sql.Connection;
  8. import java.sql.DriverManager;
  9. import java.sql.PreparedStatement;
  10. import java.sql.ResultSet;
  11. import java.sql.SQLException;
  12. import java.sql.Statement;
  13.  
  14. import javax.swing.AbstractAction;
  15. import javax.swing.Action;
  16. import javax.swing.JButton;
  17. import javax.swing.JFrame;
  18. import javax.swing.JScrollPane;
  19. import javax.swing.JTable;
  20. import javax.swing.event.TableModelEvent;
  21. import javax.swing.event.TableModelListener;
  22. import javax.swing.table.DefaultTableModel;
  23.  
  24. public class driver extends JFrame{
  25.  
  26.     private JTable table;
  27.     private String[] columns = {"RowID","Name","Occupation"};
  28.     private TableModelListener tableModelListener;
  29.    
  30.     public driver() {
  31.         DefaultTableModel model = new DefaultTableModel(columns, 0);
  32.         table = new JTable(model);
  33.        
  34.         //try {createSQL();}    catch(Exception e1){e1.printStackTrace();}
  35.         try {populateSQL(table);}   catch(Exception e1){e1.printStackTrace();}
  36.        
  37.        
  38.        
  39.         Action action = new AbstractAction()
  40.         {
  41.             private static final long serialVersionUID = 1L;
  42.             @Override
  43.             public void actionPerformed(ActionEvent arg0) { }
  44.         };
  45.        
  46.         TableCellListener tcl = new TableCellListener(table, action);
  47.        
  48.        
  49.        
  50.        
  51.        
  52.         table.setCellSelectionEnabled(true);
  53.         table.setPreferredScrollableViewportSize(new Dimension(1200,900));
  54.         table.setFillsViewportHeight(true);
  55.        
  56.         JScrollPane scrollPane = new JScrollPane(table);
  57.         scrollPane.setVisible(true);
  58.        
  59.         JButton delete = new JButton("Delete");
  60.         delete.addActionListener(new ActionListener(){
  61.             public void actionPerformed(ActionEvent e){
  62.                 if(table.getSelectedRow() > -1){
  63.                     try {
  64.                         deleteSQL(String.valueOf(table.getSelectedRow()+1));
  65.                     } catch (ClassNotFoundException e1) {e1.printStackTrace();} catch (SQLException e1) {e1.printStackTrace();}
  66.                    
  67.                 }
  68.             }
  69.         });
  70.        
  71.        
  72.        
  73.         getContentPane().add(delete, BorderLayout.LINE_START);
  74.         getContentPane().add(scrollPane, BorderLayout.PAGE_START);
  75.        
  76.        
  77.         tableModelListener = new TableModelListener(){
  78.  
  79.             @Override
  80.             public void tableChanged(TableModelEvent e) {
  81.                 if(e.getType() == TableModelEvent.UPDATE){                 
  82.                     if (String.valueOf(tcl.getOldValue()).equals(String.valueOf(table.getModel().getValueAt(e.getFirstRow(), e.getColumn())))){
  83.                         System.out.println("SAME");                    
  84.                     }
  85.                     else{
  86.                         String rowid = String.valueOf(table.getModel().getValueAt(e.getFirstRow(), 0));
  87.                         String name = String.valueOf(table.getModel().getValueAt(e.getFirstRow(), 1));
  88.                         String occ = String.valueOf(table.getModel().getValueAt(e.getFirstRow(), 2));
  89.                        
  90.                         try {
  91.                             updateSQL(rowid, name, occ);
  92.                         } catch (ClassNotFoundException | SQLException e1) {e1.printStackTrace();}
  93.                     }
  94.                 }
  95.             }
  96.            
  97.            
  98.         };
  99.         table.getModel().addTableModelListener(tableModelListener);
  100.        
  101.        
  102.     }
  103.    
  104.     public void createSQL() throws ClassNotFoundException, SQLException{
  105.         Class.forName("org.sqlite.JDBC");
  106.         Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
  107.         Statement stat = conn.createStatement();
  108.         stat.executeUpdate("CREATE TABLE IF NOT EXISTS people (name, occupation)");
  109.         PreparedStatement prep = conn.prepareStatement("INSERT INTO people VALUES (?, ?);");
  110.         prep.setString(1, "Pythagoras");
  111.         prep.setString(2, "Number Theory");
  112.         prep.addBatch();
  113.            prep.setString(1, "René Descartes");
  114.             prep.setString(2, "French");
  115.             prep.addBatch();
  116.             prep.setString(1, "Plato");
  117.             prep.setString(2, "Philosopher");
  118.             prep.addBatch();
  119.             prep.setString(1, "Fermat");
  120.             prep.setString(2, "Judge");
  121.             prep.addBatch();
  122.             prep.setString(1, "Andrew Wiles");
  123.             prep.setString(2, "Mathematician");
  124.             prep.addBatch();
  125.             prep.setString(1, "Gandhi");
  126.             prep.setString(2, "politics");
  127.             prep.addBatch();
  128.             prep.setString(1, "Wittgenstein");
  129.             prep.setString(2, "Rich Kid");
  130.             prep.addBatch();        
  131.             prep.setString(1, "Marvin Minksy");
  132.             prep.setString(2, "Scientist");
  133.             prep.addBatch();      
  134.             prep.setString(1, "Leon Battista Alberti");
  135.             prep.setString(2, "Author");
  136.             prep.addBatch();      
  137.             prep.setString(1, "Johannes Trithemius");
  138.             prep.setString(2, "Author");
  139.             prep.addBatch();  
  140.             prep.setString(1, "J. Robert Oppenheimer");
  141.             prep.setString(2, "Theoretical physicist");
  142.             prep.addBatch();  
  143.             prep.setString(1, "Dante Alighieri");
  144.             prep.setString(2, "Poet");
  145.             prep.addBatch();  
  146.             prep.setString(1, "Maryam Mirzakhani");
  147.             prep.setString(2, "Mathematician");
  148.             prep.addBatch();  
  149.             prep.setString(1, "Sophie Germain");
  150.             prep.setString(2, "Mathematician");
  151.             prep.addBatch();  
  152.             prep.setString(1, "Muhammad ibn Musa al-Khwarizmi");
  153.             prep.setString(2, "Scholar");
  154.             prep.addBatch();  
  155.             prep.setString(1, "Brian Greene");
  156.             prep.setString(2, "Theoretical Physicist");
  157.             prep.addBatch();  
  158.             prep.setString(1, "Cat Deleted Entry");        
  159.             prep.setString(2, "Physicist");
  160.             prep.addBatch();
  161.             prep.setString(1, "Satoshi Nakamoto");
  162.             prep.setString(2, "CS/Social Engineer");
  163.             prep.addBatch();
  164.             prep.setString(1, "Peter Singer");
  165.             prep.setString(2, "Ethicist");
  166.             prep.addBatch();
  167.             prep.setString(1, "Samantha _");
  168.             prep.setString(2, "Student");
  169.             prep.addBatch();
  170.            
  171.             conn.setAutoCommit(false);
  172.             prep.executeBatch();
  173.             conn.setAutoCommit(true);
  174.             conn.close();        
  175.            
  176.     }
  177.     public void populateSQL(JTable table) throws ClassNotFoundException, SQLException{
  178.         Class.forName("org.sqlite.JDBC");
  179.         Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
  180.         Statement stat = conn.createStatement();
  181.         ResultSet rs = stat.executeQuery("SELECT rowid, * FROM people");
  182.         while (rs.next()){
  183.             Object[] row = new Object[columns.length];
  184.             for (int i = 1; i <= columns.length; i++){
  185.                 row[i-1] = rs.getObject(i);
  186.             }
  187.             ((DefaultTableModel) table.getModel()).insertRow(rs.getRow()-1, row);
  188.         }
  189.         rs.close();
  190.         conn.close();      
  191.     }
  192.     public void deleteSQL(String rowid) throws SQLException, ClassNotFoundException{
  193.         Class.forName("org.sqlite.JDBC");
  194.         Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
  195.         Statement stat = conn.createStatement();
  196.         stat.executeUpdate("DELETE FROM people WHERE rowid = "+rowid+";");
  197.         ((DefaultTableModel)table.getModel()).removeRow(Integer.parseInt(rowid)-1);
  198.        
  199.     }
  200.     public void updateSQL(String rowid, String name, String occ) throws SQLException, ClassNotFoundException{
  201.         Class.forName("org.sqlite.JDBC");
  202.         Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
  203.         Statement stat = conn.createStatement();
  204.         stat.executeUpdate("UPDATE people SET name = '"+name+"', occupation = '"+occ+"' WHERE rowid = "+rowid+";");
  205.        
  206.     }
  207.    
  208.     public static void main(String[] args) {
  209.         driver frame = new driver();
  210.         frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
  211.         frame.pack();
  212.         frame.setLocationRelativeTo(null);
  213.         frame.setVisible(true);
  214.     }
  215.  
  216. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement