Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.robertsroom.java;
- import java.awt.BorderLayout;
- import java.awt.Dimension;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- import javax.swing.AbstractAction;
- import javax.swing.Action;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JScrollPane;
- import javax.swing.JTable;
- import javax.swing.event.TableModelEvent;
- import javax.swing.event.TableModelListener;
- import javax.swing.table.DefaultTableModel;
- public class driver extends JFrame{
- private JTable table;
- private String[] columns = {"RowID","Name","Occupation"};
- private TableModelListener tableModelListener;
- public driver() {
- DefaultTableModel model = new DefaultTableModel(columns, 0);
- table = new JTable(model);
- //try {createSQL();} catch(Exception e1){e1.printStackTrace();}
- try {populateSQL(table);} catch(Exception e1){e1.printStackTrace();}
- Action action = new AbstractAction()
- {
- private static final long serialVersionUID = 1L;
- @Override
- public void actionPerformed(ActionEvent arg0) { }
- };
- TableCellListener tcl = new TableCellListener(table, action);
- table.setCellSelectionEnabled(true);
- table.setPreferredScrollableViewportSize(new Dimension(1200,900));
- table.setFillsViewportHeight(true);
- JScrollPane scrollPane = new JScrollPane(table);
- scrollPane.setVisible(true);
- JButton delete = new JButton("Delete");
- delete.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- if(table.getSelectedRow() > -1){
- try {
- deleteSQL(String.valueOf(table.getSelectedRow()+1));
- } catch (ClassNotFoundException e1) {e1.printStackTrace();} catch (SQLException e1) {e1.printStackTrace();}
- }
- }
- });
- getContentPane().add(delete, BorderLayout.LINE_START);
- getContentPane().add(scrollPane, BorderLayout.PAGE_START);
- tableModelListener = new TableModelListener(){
- @Override
- public void tableChanged(TableModelEvent e) {
- if(e.getType() == TableModelEvent.UPDATE){
- if (String.valueOf(tcl.getOldValue()).equals(String.valueOf(table.getModel().getValueAt(e.getFirstRow(), e.getColumn())))){
- System.out.println("SAME");
- }
- else{
- String rowid = String.valueOf(table.getModel().getValueAt(e.getFirstRow(), 0));
- String name = String.valueOf(table.getModel().getValueAt(e.getFirstRow(), 1));
- String occ = String.valueOf(table.getModel().getValueAt(e.getFirstRow(), 2));
- try {
- updateSQL(rowid, name, occ);
- } catch (ClassNotFoundException | SQLException e1) {e1.printStackTrace();}
- }
- }
- }
- };
- table.getModel().addTableModelListener(tableModelListener);
- }
- public void createSQL() throws ClassNotFoundException, SQLException{
- Class.forName("org.sqlite.JDBC");
- Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
- Statement stat = conn.createStatement();
- stat.executeUpdate("CREATE TABLE IF NOT EXISTS people (name, occupation)");
- PreparedStatement prep = conn.prepareStatement("INSERT INTO people VALUES (?, ?);");
- prep.setString(1, "Pythagoras");
- prep.setString(2, "Number Theory");
- prep.addBatch();
- prep.setString(1, "René Descartes");
- prep.setString(2, "French");
- prep.addBatch();
- prep.setString(1, "Plato");
- prep.setString(2, "Philosopher");
- prep.addBatch();
- prep.setString(1, "Fermat");
- prep.setString(2, "Judge");
- prep.addBatch();
- prep.setString(1, "Andrew Wiles");
- prep.setString(2, "Mathematician");
- prep.addBatch();
- prep.setString(1, "Gandhi");
- prep.setString(2, "politics");
- prep.addBatch();
- prep.setString(1, "Wittgenstein");
- prep.setString(2, "Rich Kid");
- prep.addBatch();
- prep.setString(1, "Marvin Minksy");
- prep.setString(2, "Scientist");
- prep.addBatch();
- prep.setString(1, "Leon Battista Alberti");
- prep.setString(2, "Author");
- prep.addBatch();
- prep.setString(1, "Johannes Trithemius");
- prep.setString(2, "Author");
- prep.addBatch();
- prep.setString(1, "J. Robert Oppenheimer");
- prep.setString(2, "Theoretical physicist");
- prep.addBatch();
- prep.setString(1, "Dante Alighieri");
- prep.setString(2, "Poet");
- prep.addBatch();
- prep.setString(1, "Maryam Mirzakhani");
- prep.setString(2, "Mathematician");
- prep.addBatch();
- prep.setString(1, "Sophie Germain");
- prep.setString(2, "Mathematician");
- prep.addBatch();
- prep.setString(1, "Muhammad ibn Musa al-Khwarizmi");
- prep.setString(2, "Scholar");
- prep.addBatch();
- prep.setString(1, "Brian Greene");
- prep.setString(2, "Theoretical Physicist");
- prep.addBatch();
- prep.setString(1, "Cat Deleted Entry");
- prep.setString(2, "Physicist");
- prep.addBatch();
- prep.setString(1, "Satoshi Nakamoto");
- prep.setString(2, "CS/Social Engineer");
- prep.addBatch();
- prep.setString(1, "Peter Singer");
- prep.setString(2, "Ethicist");
- prep.addBatch();
- prep.setString(1, "Samantha _");
- prep.setString(2, "Student");
- prep.addBatch();
- conn.setAutoCommit(false);
- prep.executeBatch();
- conn.setAutoCommit(true);
- conn.close();
- }
- public void populateSQL(JTable table) throws ClassNotFoundException, SQLException{
- Class.forName("org.sqlite.JDBC");
- Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
- Statement stat = conn.createStatement();
- ResultSet rs = stat.executeQuery("SELECT rowid, * FROM people");
- while (rs.next()){
- Object[] row = new Object[columns.length];
- for (int i = 1; i <= columns.length; i++){
- row[i-1] = rs.getObject(i);
- }
- ((DefaultTableModel) table.getModel()).insertRow(rs.getRow()-1, row);
- }
- rs.close();
- conn.close();
- }
- public void deleteSQL(String rowid) throws SQLException, ClassNotFoundException{
- Class.forName("org.sqlite.JDBC");
- Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
- Statement stat = conn.createStatement();
- stat.executeUpdate("DELETE FROM people WHERE rowid = "+rowid+";");
- ((DefaultTableModel)table.getModel()).removeRow(Integer.parseInt(rowid)-1);
- }
- public void updateSQL(String rowid, String name, String occ) throws SQLException, ClassNotFoundException{
- Class.forName("org.sqlite.JDBC");
- Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
- Statement stat = conn.createStatement();
- stat.executeUpdate("UPDATE people SET name = '"+name+"', occupation = '"+occ+"' WHERE rowid = "+rowid+";");
- }
- public static void main(String[] args) {
- driver frame = new driver();
- frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
- frame.pack();
- frame.setLocationRelativeTo(null);
- frame.setVisible(true);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement