当我单击"添加学生"时,程序冻结



连接类到数据库(SmartData(

package smartdatabase;
/**
*
* @author travi
*/
import java.sql.*;//Import neccessary libraries for program
public class Conn {
private Connection connect = null;//declare connection
private Statement stmt = null;//declare statement
private PreparedStatement ps = null;//declare preparedstatement
public Conn() {//default constructor
try {
Class.forName("org.apache.derby.jdbc.ClientDriver");
connect = DriverManager.getConnection("jdbc:derby://localhost:1527/SmartData;create=true", "root", "password");//establish connection
} catch (SQLException se) {
se.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public ResultSet getStudents() {
try {//try for errors
//establishing connection
String sql;//declare string for SQL command
sql = "SELECT FirstName, Surname FROM tblStudents";//setting SQL command
stmt = connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);//creating statement
stmt.executeQuery(sql);//execute statement
ResultSet rs = stmt.getResultSet();//collect query results
if (!rs.first()) {//checking if results are empty
System.out.println("Empty ResultSet");//error for empty resultset
} else {
do {
String Firstname = rs.getString("Firstname");
String Surname = rs.getString("surname");
System.out.println(Firstname + "    " + Surname);//this was not for final output, only for testing purposes, which I never got past
} while (rs.next());//while rs is not empty
}
return rs;//returning resultset
} catch (SQLException se) {
se.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}

return null;
}
public void addStudent(String fn, String sn, int kid) {//method to add new student to database
try {//trying for errors
String qry = "INSERT INTO TblStudents(FirstName, Surname, Kid) VALUES(?,?,?)";//setting query command
ps = connect.prepareStatement(qry);//preparing statement
ps.setString(1, fn);//setting FirstName 
ps.setString(2, sn);//setting Surname
ps.setInt(3, kid);//setting ID of classroom student is in
ps.executeUpdate();//running command
//cache cleanup
ps.close();
connect.close();
} catch (SQLException se) {
se.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {//cache cleanup
try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException se) {
se.printStackTrace();
}
}
}
String getKidsNamebyKid(int i) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
String getCentreNamebyCid(int i) {
String out = "Error, centre not found";
try {
Class.forName("org.apache.derby.jdbc.ClientDriver");
connect = DriverManager.getConnection("jdbc:derby://localhost:1527/SmartData;create=true", "root", "password");
String qry = "SELECT CENTRENAME FROM TBLCENTRES WHERE CID = ?";//setting query command
ps = connect.prepareStatement(qry);//preparing statement
ps.setInt(1, i);//setting CID
ps.executeQuery();//running command
out = ps.getResultSet().toString();
ps.close();
} catch (SQLException se) {
se.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {//cache cleanup
try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException se) {
se.printStackTrace();
}
try {
if (connect != null) {
connect.close();
}
} catch (SQLException se) {
se.printStackTrace();
}
}
return out;
}
}

添加新的学生班级

package smartdatabase;
/**
*
* @author travi
*/
public class AddStudent extends javax.swing.JFrame {
private        Conn con = new Conn();
/**
* Creates new form AddStudent
*/
public AddStudent() {
initComponents();
int i=0;
while(con.getCentreNamebyCid(i)!=null){
jcbCentre.addItem(con.getCentreNamebyCid(i));
i++;
}
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {
lblTitle = new javax.swing.JLabel();
lblFirstName = new javax.swing.JLabel();
lblSurname = new javax.swing.JLabel();
lblCentre = new javax.swing.JLabel();
lblKids = new javax.swing.JLabel();
txbFirstName = new javax.swing.JTextField();
txbSurname = new javax.swing.JTextField();
jfcPDF = new javax.swing.JFileChooser();
jcbCentre = new javax.swing.JComboBox<>();
jcbKids = new javax.swing.JComboBox<>();
btnCancel = new javax.swing.JButton();
jLabel6 = new javax.swing.JLabel();
btnAdd = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
lblTitle.setText("Add new student");
lblFirstName.setText("First Name:");
lblSurname.setText("Surname:");
lblCentre.setText("Centre:");
lblKids.setText("Class:");
jfcPDF.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jfcPDFActionPerformed(evt);
}
});
btnCancel.setText("Cancel");
jLabel6.setText("Please select the PDF containing the student's documents");
btnAdd.setText("Add Student");
btnAdd.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAddActionPerformed(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()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(109, 109, 109)
.addComponent(jfcPDF, javax.swing.GroupLayout.PREFERRED_SIZE, 486, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(btnAdd))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(btnCancel))
.addGroup(layout.createSequentialGroup()
.addGap(191, 191, 191)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(lblTitle, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblFirstName)
.addComponent(lblSurname, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(lblCentre, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(lblKids, javax.swing.GroupLayout.Alignment.TRAILING))
.addGap(31, 31, 31)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(txbFirstName, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txbSurname, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jcbCentre, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jcbKids, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 135, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addComponent(jLabel6))))
.addContainerGap(12, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(lblTitle)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblFirstName)
.addComponent(txbFirstName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblSurname)
.addComponent(txbSurname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblCentre)
.addComponent(jcbCentre, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblKids)
.addComponent(jcbKids, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 36, Short.MAX_VALUE)
.addComponent(jLabel6)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jfcPDF, javax.swing.GroupLayout.PREFERRED_SIZE, 213, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnAdd))
.addGap(0, 0, 0)
.addComponent(btnCancel)
.addContainerGap())
);
pack();
}// </editor-fold>                        
private void jfcPDFActionPerformed(java.awt.event.ActionEvent evt) {                                       
// TODO add your handling code here:
}                                      
private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {                                       
con.addStudent(txbFirstName.getText(),txbSurname.getText(),1);
}                                      
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(AddStudent.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(AddStudent.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(AddStudent.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(AddStudent.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new AddStudent().setVisible(true);
}
});
}
// Variables declaration - do not modify                     
private javax.swing.JButton btnAdd;
private javax.swing.JButton btnCancel;
private javax.swing.JLabel jLabel6;
private javax.swing.JComboBox<String> jcbCentre;
private javax.swing.JComboBox<String> jcbKids;
private javax.swing.JFileChooser jfcPDF;
private javax.swing.JLabel lblCentre;
private javax.swing.JLabel lblFirstName;
private javax.swing.JLabel lblKids;
private javax.swing.JLabel lblSurname;
private javax.swing.JLabel lblTitle;
private javax.swing.JTextField txbFirstName;
private javax.swing.JTextField txbSurname;
// End of variables declaration                   
}

希望我能提供更多信息,但甚至没有错误代码,它只是冻结了,我无法再关闭或与程序交互,任何帮助都将不胜感激。addstudent是通过主菜单上的按钮调用的(构造一个addstudent对象,将visible设置为true(,当我单击按钮时,它就停止了。

您的getCentreNamebyCid从不返回null,因此while(con.getCentreNamebyCid(i)!=null)始终为true。所以,我认为,你不应该在getCentreNamebyCid中初始化String out

String getCentreNamebyCid(int i) {
String out;
try {
...

最新更新