title: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2
body: <p>This is my <code>javax.swing</code> class. But it always throws the error  <code>java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2</code>. Not quite sure what is causing it. Where is the error?</p>
  
  <pre><code>import java.awt.event.*;
  import java.awt.*;
  import java.sql.*;
  import javax.swing.*;
  
  public class SwingSearchApp extends JFrame implements ActionListener {
  
      //Initializing Components
      private static final long serialVersionUID = 1L;
      JLabel lb, lb1, lb2, lb3, lb4, lb5;
      JTextField tf1, tf2, tf3, tf4, tf5;
      JButton btn;
  
      //Creating Constructor for initializing JFrame components
      SwingSearchApp() {
          //Providing Title
          super("Fetching Student Information");
          lb5 = new JLabel("Enter Name:");
          lb5.setBounds(20, 20, 100, 20);
          tf5 = new JTextField(20);
          tf5.setBounds(130, 20, 200, 20);
          btn = new JButton("Submit");
          btn.setBounds(50, 50, 100, 20);
          btn.addActionListener(this);
          lb = new JLabel("Fetching Search Information From Database");
          lb.setBounds(30, 80, 450, 30);
          lb.setForeground(Color.red);
          lb.setFont(new Font("Serif", Font.BOLD, 20));
          setVisible(true);
          setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          setSize(500, 500);
          lb1 = new JLabel("U_Name:");
          lb1.setBounds(20, 120, 100, 20);
          tf1 = new JTextField(50);
          tf1.setBounds(130, 120, 200, 20);
          lb2 = new JLabel("U_Mail:");
          lb2.setBounds(20, 150, 100, 20);
          tf2 = new JTextField(100);
          tf2.setBounds(130, 150, 200, 20);
          lb3 = new JLabel("U_Pass:");
          lb3.setBounds(20, 180, 100, 20);
          tf3 = new JTextField(50);
          tf3.setBounds(130, 180, 200, 20);
          lb4 = new JLabel("U_Country:");
          lb4.setBounds(20, 210, 100, 20);
          tf4 = new JTextField(50);
          tf4.setBounds(130, 210, 100, 20);
          setLayout(null);
          //Add components to the JFrame
          add(lb5);
          add(tf5);
          add(btn);
          add(lb);
          add(lb1);
          add(tf1);
          add(lb2);
          add(tf2);
          add(lb3);
          add(tf3);
          add(lb4);
          add(tf4);
          //Set TextField Editable False
          tf1.setEditable(false);
          tf2.setEditable(false);
          tf3.setEditable(false);
          tf4.setEditable(false);
      }
  
      public void actionPerformed(ActionEvent e) {
          //Create DataBase Coonection and Fetching Records
          try {
              String str = tf5.getText();
              String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + "C:\\users\\ppreeti\\employee.accdb";
              Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
              Connection con = DriverManager.getConnection(url, "", "");
              //Connection con = DriverManager.getConnection("jdbc:oracle:thin:@mcndesktop07:1521", "sandeep", "welcome");
              PreparedStatement st = con.prepareStatement("select * from emp where uname=?");
              st.setString(1, str);
              //Excuting Query
              ResultSet rs = st.executeQuery();
              if (rs.next()) {
                  String s = rs.getString(1);
                  String s1 = rs.getString(2);
                  String s2 = rs.getString(3);
                  String s3 = rs.getString(4);
                  //Sets Records in TextFields.
                  tf1.setText(s);
                  tf2.setText(s1);
                  tf3.setText(s2);
                  tf4.setText(s3);
              } else {
                  JOptionPane.showMessageDialog(null, "Name not Found");
              }
              //Create Exception Handler
          } catch (Exception ex) {
              System.out.println(ex);
          }
      }
  //Running Constructor
  
      public static void main(String args[]) {
          new SwingSearchApp();
      }
  }
  </code></pre>
  
  <p>The structure of my table in Access database contains the following fields:-
  <code>uname</code>, <code>umail</code>, <code>upass</code>, <code>upcountry</code>.</p>