Query Database Using Swing UI
January 12, 2012 1 Comment
DoConnect(): connect to db, run query, get first record into UI
BtnAction(): logic to manipulate the records (NEXT, PRVIOUS, FIRST, LAST)
Rest of codes (SWING UI) are generated by using NeatBean IDE 6.8 on Linux.
/*
to compile: javac -cp /usr/share/java/postgresql.jar SimpleForm.java
to execute: java -cp /usr/share/java/postgresql.jar:. SimpleForm
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import javax.swing.JOptionPane;
public class SimpleForm extends javax.swing.JFrame {
Connection con;
Statement stmt;
ResultSet rs;
/** Creates new form SimpleForm */
public SimpleForm() {
initComponents();
DoConnect();
}
public void DoConnect( ) {
try {
//connect to the database
con = DriverManager.getConnection("jdbc:postgresql:mydb",
"testuser","testpassword");
// construct a sql statement, execute it and load resultset to rs "logan","ready2go");
//stmt = con.createStatement();
stmt = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE );
String sql = "select firstname, lastname, name from employees, departments where employees.department = departments.id";
rs = stmt.executeQuery(sql);
// retrieve the fields from rs to txtFields
if (rs.next()) {
txtFirst.setText(rs.getString("firstname"));
txtLast.setText(rs.getString("lastname"));
txtDept.setText(rs.getString("name"));
}
else { JOptionPane.showMessageDialog(SimpleForm.this, "No records!");}
}
catch (SQLException err) {
JOptionPane.showMessageDialog(SimpleForm.this, err.getMessage());
}
}
// Next, Previous, First, Last Action Event Handlers
public void DoBtnAction(int BtnAction ) {
try {
if (rs != null)
{
boolean Action = false;
switch (BtnAction) {
case 1: Action = rs.next();
break;
case 2: Action = rs.previous();
break;
case 3: Action = rs.first();
break;
case 4: Action = rs.last();
break;
default:
break;
}
if ( Action ) {
txtFirst.setText(rs.getString("firstname"));
txtLast.setText(rs.getString("lastname"));
txtDept.setText(rs.getString("name"));
}
else {
switch (BtnAction) {
case 1: rs.previous( );
JOptionPane.showMessageDialog(SimpleForm.this, "End of File");
break;
case 2: rs.next( );
JOptionPane.showMessageDialog(SimpleForm.this, "Start of File");
break;
default:
break;
}
} // end of else for Action
} // if Action
else { JOptionPane.showMessageDialog(SimpleForm.this, "No records!");}
} // try
catch (SQLException err) {
JOptionPane.showMessageDialog(SimpleForm.this, err.getMessage());
}
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
txtFirst = new javax.swing.JTextField();
txtLast = new javax.swing.JTextField();
txtDept = new javax.swing.JTextField();
lblFirst = new javax.swing.JLabel();
lblLast = new javax.swing.JLabel();
lblDept = new javax.swing.JLabel();
btnNext = new javax.swing.JButton();
btnPrevious = new javax.swing.JButton();
btnFirst = new javax.swing.JButton();
btnLast = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
lblFirst.setText("First Name:");
lblLast.setText("Last Name");
lblDept.setText("Department:");
btnNext.setText("Next");
btnNext.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnNextActionPerformed(evt);
}
});
btnPrevious.setText("Previous");
btnPrevious.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnPreviousActionPerformed(evt);
}
});
btnFirst.setText("First");
btnFirst.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnFirstActionPerformed(evt);
}
});
btnLast.setText("Last");
btnLast.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnLastActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(49, 49, 49)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(btnPrevious)
.addGap(18, 18, 18)
.addComponent(btnNext)
.addGap(46, 46, 46)
.addComponent(btnFirst)
.addGap(18, 18, 18)
.addComponent(btnLast)
.addContainerGap())
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(lblDept)
.addContainerGap())
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(txtDept, javax.swing.GroupLayout.DEFAULT_SIZE, 323, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txtFirst, javax.swing.GroupLayout.PREFERRED_SIZE, 126, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblFirst))
.addGap(42, 42, 42)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblLast)
.addComponent(txtLast, javax.swing.GroupLayout.PREFERRED_SIZE, 129, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addContainerGap(81, Short.MAX_VALUE)))))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(27, 27, 27)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblFirst)
.addComponent(lblLast))
.addGap(27, 27, 27)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtLast, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtFirst, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(22, 22, 22)
.addComponent(lblDept)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(txtDept, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(32, 32, 32)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnPrevious)
.addComponent(btnLast)
.addComponent(btnFirst)
.addComponent(btnNext))
.addContainerGap(58, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void btnNextActionPerformed(java.awt.event.ActionEvent evt) {
DoBtnAction(1);
}
private void btnPreviousActionPerformed(java.awt.event.ActionEvent evt) {
DoBtnAction(2);
}
private void btnFirstActionPerformed(java.awt.event.ActionEvent evt) {
DoBtnAction(3);
}
private void btnLastActionPerformed(java.awt.event.ActionEvent evt) {
DoBtnAction(4);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new SimpleForm().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton btnFirst;
private javax.swing.JButton btnLast;
private javax.swing.JButton btnNext;
private javax.swing.JButton btnPrevious;
private javax.swing.JLabel lblDept;
private javax.swing.JLabel lblFirst;
private javax.swing.JLabel lblLast;
private javax.swing.JTextField txtDept;
private javax.swing.JTextField txtFirst;
private javax.swing.JTextField txtLast;
// End of variables declaration
}

