2016-03-22 9 views
0

それは大きなコードですが、助けてください!私はFace Recognition(OpenCV Libraries)に関するプロジェクトを行っています。このプロジェクトで認識された学生の出席をマークします。私のプロジェクトはすべて準備ができていますが、私のJFrameで使用されているJTextFieldからテキストを取得することはできません...私はMYSqlとNetbeansを使用しています!netbeansを使用して、PreparedStatementとResultSetを使用してMYSqlからデータを取得する

ここにコードがあります!

import static cern.jet.math.Bessel.i1; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import java.io.*; 
import facedetection.*; 
import com.googlecode.javacv.*; 
import com.googlecode.javacv.cpp.*; 
import com.googlecode.javacpp.Loader; 
import com.mysql.jdbc.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 


public class FaceRecognizer extends JFrame 
{ 
    // GUI components 
    private FaceRecogPanel facePanel; 
    private JButton recogBut; 
    private JTextField nameField;  // where the name (and distance info) appears 
    private JButton done; 
    private JButton exit; 


    public FaceRecognizer() 
    { 
    super("Face Recognizer"); 
    FaceRecognizer fac; 
    Container c = getContentPane(); 
    c.setLayout(new BorderLayout()); 

    // Preload the opencv_objdetect module to work around a known bug. 
    Loader.load(opencv_objdetect.class); 

    facePanel = new FaceRecogPanel(this); // the sequence of pictures appear here 
    c.add(facePanel, BorderLayout.CENTER); 


    // button for recognizing a highlighted face 
    done = new JButton("Done"); 
    recogBut = new JButton("Recognize Face"); 
    recogBut.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) 
     { nameField.setText(""); 
     recogBut.setEnabled(false); 
     facePanel.setRecog(); 
     } 
    }); 
    done.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) 
     { 
      WelcomeStaffs wc = new WelcomeStaffs(); 
      Connection con = null; 
      try{ 
      String url = "jdbc:mysql://localhost:3306/facedetection"; 
      Class.forName("com.mysql.jdbc.Driver"); 
      System.out.println("Conncection Success"); 
      con = (Connection) DriverManager.getConnection(url, "root", "2204"); 
      System.out.println("Database Connected"); 
      System.out.println(nameField.getText()); 
      } 
      catch(Exception ex) 
      { 
       System.out.println("Exception = "+ex); 
      } 
      String nm = nameField.getText().toUpperCase(); 
      String name ="",course=""; 
      String subject = wc.subject_txt.getText(); 
      String staff = wc.staff_txt.getText(); 
      String day = wc.day_txt.getText(); 
     // String tempd = wc.date_txt.getText().trim(); 
     // String tempt = wc.time_txt.getText().trim(); 
      int roll_no = 0; 
     // int date = Integer.parseInt(tempd); 
     // int time = Integer.parseInt(tempt); 
      String sql = "select roll_no,name,course from students where name= ? "; 
      try { 

       PreparedStatement ps = con.prepareStatement(sql); 
       ps.setString(1,nm); 

       ResultSet rs = ps.executeQuery(sql); 
       while(rs.next()) //retrieving values from database and storing it! 
       { 
        roll_no = rs.getInt("roll_no"); 
        name = rs.getString("name"); 
        course = rs.getString("course"); 
        System.out.println("Retrieved Data!!!!!!!"+name+course); 
       } 
      } catch (SQLException ex) { 
       Logger.getLogger(FaceRecognizer.class.getName()).log(Level.SEVERE, null, ex); 
      } 
      try{ 
       if(roll_no == 0 && name.equals("") && course.equals("")) 
       { 
        System.out.println("EMPTY"); 
       } 
       else 
       { 
       sql = "INSERT INTO attendance(roll_no, name, course, subject, staff, day) VALUES(?,?,?,?,?,?)"; 
       PreparedStatement ps1 = con.prepareStatement(sql); 
       ps1.setInt(1,roll_no); 
       ps1.setString(2,name); 
       ps1.setString(3,course); 
       ps1.setString(4,subject); 
       ps1.setString(5,staff); 
       ps1.setString(6,day); 
      // ps1.setInt(7,date); 
      // ps1.setInt(8,time); 
       int i1 = ps1.executeUpdate(); 
       System.out.println("Data Inserted"+i1); 
       } 

      } 
      catch(Exception ec) 
      { 
       System.out.println(""+ec); 
      } 

     } 
    }); 

    nameField = new JTextField(20); // for the name of the recognized face 
    nameField.setEditable(false); 

    JPanel p = new JPanel(); 
    p.add(recogBut); 
    p.add(new JLabel("Name: ")); 
    p.add(nameField); 
    p.add(done); 
    c.add(p, BorderLayout.SOUTH); 


    addWindowListener(new WindowAdapter() { 
     public void windowClosing(WindowEvent e) 
     { facePanel.closeDown(); // stop snapping pics 
     /*Attendance_Chart ac = new Attendance_Chart(); 
     ac.setVisible(true);*/ 
     System.exit(0); 
     } 
    }); 

    pack(); 
    setResizable(false); 
    setVisible(true); 
    } // end of FaceRecognizer() 



    public void setRecogName(final String faceName, final String dist) 
    // update face name and its distance in the nameField; called from panel 
    { 
    SwingUtilities.invokeLater(new Runnable() { 
     public void run() 
     { nameField.setText(faceName); 
     recogBut.setEnabled(true); 
     } 
    }); 
    } // end of setRecogName() 


    // ------------------------------------------------------- 

    public static void main(String args[]) 
    { new FaceRecognizer(); 

    } 

} // end of FaceRecognizer class 

そして、私が得る例外はこれです!完了ボタンを押しながら!

Mar 22, 2016 10:04:49 PM FaceRecognizer$2 actionPerformed 
SEVERE: null 
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
    at com.mysql.jdbc.Util.getInstance(Util.java:386) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1053) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2788) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2738) 
    at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1617) 
    at FaceRecognizer$2.actionPerformed(FaceRecognizer.java:89) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 
    at java.awt.Component.processMouseEvent(Component.java:6525) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 
    at java.awt.Component.processEvent(Component.java:6290) 
    at java.awt.Container.processEvent(Container.java:2234) 
    at java.awt.Component.dispatchEventImpl(Component.java:4881) 
    at java.awt.Container.dispatchEventImpl(Container.java:2292) 
    at java.awt.Component.dispatchEvent(Component.java:4703) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462) 
    at java.awt.Container.dispatchEventImpl(Container.java:2278) 
    at java.awt.Window.dispatchEventImpl(Window.java:2750) 
    at java.awt.Component.dispatchEvent(Component.java:4703) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 
    at java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:709) 
    at java.awt.EventQueue$3.run(EventQueue.java:703) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) 
    at java.awt.EventQueue$4.run(EventQueue.java:731) 
    at java.awt.EventQueue$4.run(EventQueue.java:729) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 

答えて

2

変更

ResultSet rs = ps.executeQuery(); 

にライン

ResultSet rs = ps.executeQuery(sql); 

(そうでないあなたがselect roll_no,name,course from students where name= ?として静的SQL文を実行している - とMySQLは、パラメータのワイルドカード文句)。

+0

ありがとうございました!出来た! (Y) –

関連する問題