import javax.swing.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;

public class FindBikeUsingPreparedStatement extends JApplet {
  boolean isStandalone = false;
  private JTextField jtfbike = new JTextField(25);
  private JTextField jtfcost = new JTextField(6);
  private JButton jbtShowCost = new JButton("Show Bike Cost Info");

  // PreparedStatement for executing queries
  private PreparedStatement pstmt;

  /** Initialize the applet */
  public void init() {
    // Initialize database connection and create a PreparedStatement object
    initializeDB();

    jbtShowCost.addActionListener(
      new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        jbtShowCost_actionPerformed(e);
      }
    });

    JPanel jPanel1 = new JPanel();
    jPanel1.add(new JLabel("Bike Name"));
    jPanel1.add(jtfbike);
    jPanel1.add(jbtShowCost);

    this.getContentPane().add(jPanel1, BorderLayout.NORTH);
  }

  private void initializeDB() {
    try {
      // Load the JDBC driver
      Class.forName("com.mysql.jdbc.Driver");
      System.out.println("Driver loaded");
      // Establish a connection
      Connection connection = DriverManager.getConnection
		 ("jdbc:mysql://localhost:3309/bikedb", "root", "root");
      System.out.println("Database connected");

      String queryString = "select cost from bikes where bikename = ?";

      // Create a statement
      pstmt = connection.prepareStatement(queryString);
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  private void jbtShowCost_actionPerformed(ActionEvent e) {
    String bikename = jtfbike.getText();
    String cost = jtfcost.getText();
    try {
      pstmt.setString(1, bikename);
      ResultSet rset = pstmt.executeQuery();

      if (rset.next()) {
        String price = rset.getString(1);
        
        // Display result in a dialog box
        JOptionPane.showMessageDialog(null, bikename + " cost $" + price);
      }
      else {
        // Display result in a dialog box
        JOptionPane.showMessageDialog(null, "Bike Not Found");
      }
    }
    catch (SQLException ex) {
      ex.printStackTrace();
    }
  }

  /** Main method */
  public static void main(String[] args) {
    FindBikeUsingPreparedStatement applet = new FindBikeUsingPreparedStatement();
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setTitle("Find Bike Cost");
    frame.getContentPane().add(applet, BorderLayout.CENTER);
    applet.init();
    applet.start();
    frame.setSize(580, 80);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    frame.setLocation((d.width - frame.getSize().width) / 2,
      (d.height - frame.getSize().height) / 2);
    frame.setVisible(true);
  }
}
