Hello everybody, i\'m a little confused about this assignment. I have created th
ID: 3660506 • Letter: H
Question
Hello everybody, i'm a little confused about this assignment. I have created the java file you see below. We are supposed to use this file to continue on our next assignment. These are the instructions:
Modify the program from to display the data from the database in a JTable. In the table, the user should NOT be able to modify the name, however they should be able to modify the purchase amount. When the amount is modified, the new value should be saved to the database immediately.
-------------------------------------------------------------------------------------------------------
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.sql.*;
import java.text.DecimalFormat;
import java.util.Scanner;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.File;
import java.io.FileNotFoundException;
import java.awt.ScrollPane;
import javax.swing.SwingConstants;
import java.awt.FlowLayout;
public class DatabaseLoader extends JFrame {
final String driver = "org.apache.derby.jdbc.EmbeddedDriver";
final String DB_URL = "jdbc:derby:CustomerData;create=true;";
private boolean dataLoaded = false;
private JPanel contentPane;
private Connection conn;
private TableListener tableListener;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
DatabaseLoader frame = new DatabaseLoader();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public DatabaseLoader() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu mnFile = new JMenu("File");
menuBar.add(mnFile);
JMenuItem mntmLoadDataFile = new JMenuItem("Load Data File");
mntmLoadDataFile
.addActionListener(new MntmLoadDataFileActionListener());
mnFile.add(mntmLoadDataFile);
JMenuItem mntmQuit = new JMenuItem("Quit");
mntmQuit.addActionListener(new MntmQuitActionListener());
//JMenuItem mntmDisplayDatabaseData = new JMenuItem("Display Database Data");
//mnFile.add(mntmDisplayDatabaseData);
mnFile.add(mntmQuit);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
createDatabase();
JPanel subpanel = new JPanel();
JButton btnDump = new JButton("Dump Table");
btnDump.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
dumpTable();
}
});
subpanel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
subpanel.add(btnDump);
contentPane.add(subpanel,BorderLayout.CENTER);
}
private void createDatabase() {
// Create a named constant for the URL.
// NOTE: This value is specific for Java DB.
try {
// Step 1: load the driver
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(DB_URL);
// create a statement
Statement stmt = conn.createStatement();
// Create the table.
stmt.execute("CREATE TABLE Customers (id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),name CHAR(25),last_purchase FLOAT, CONSTRAINT primary_key PRIMARY KEY (id))");
} catch (Exception e) {
System.out.println("Exception creating db:" + e.getMessage());
}
}
private class TableListener implements TableModelListener {
@Override
public void tableChanged(TableModelEvent e) {
// TODO Auto-generated method stub
System.out.println(e.toString());
// int row = e.getFirstRow();
// int col = e.getColumn();
// TableModel tm = (TableModel)e.getSource();
// Object data = tm.getValueAt(row, col);
// System.out.println("Data changed: " + data);
}
}
private class MntmLoadDataFileActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if(dataLoaded)
return;
final JFileChooser fc = new JFileChooser();
FileFilter filter = new FileNameExtensionFilter("CSV file", "csv");
fc.setFileFilter(filter);
int returnVal = fc.showOpenDialog(rootPane);
if(returnVal == JFileChooser.CANCEL_OPTION){
return;
}
File dataFile = fc.getSelectedFile();
Scanner scn;
try {
scn = new Scanner(dataFile);
Statement stmt = conn.createStatement();
stmt.executeUpdate("delete from Customers");
while (scn.hasNext()) {
String line = scn.nextLine();
// now split the line
String[] values = line.split(",");
String insert = String.format("insert into Customers(name,last_purchase) values('%s',%.2f)",values[0], Float.parseFloat(values[1]));
stmt.executeUpdate(insert);
}
dataLoaded = true;
JOptionPane.showMessageDialog(null, "Data file loaded");
//dumpTable();
stmt.close();
} catch (FileNotFoundException | SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
private void dumpTable(){
try {
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery("select * from Customers");
while(rs.next()){
System.out.println(rs.getString(1) + " " + rs.getString(2) + " " + rs.getString(3));
}
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private class MntmQuitActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
}
-------------------------------------------------------------------------------------------------------
Could somebody please assist! I really need some help.
Explanation / Answer
Try these: (Making SQL Queries with JDBC and Displaying Results with Swing) http://www.oreillynet.com/pub/a/oreilly/java/news/javaex_1000.html Table Cell Listener http://tips4java.wordpress.com/2009/06/07/table-cell-listener/
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.