Я создал приложение java swing, в котором в основном пользовательские журналы попадают в главное окно и выбирают элемент jmenu, который приводит пользователя в новое окно, где вы можете вводить данные в базу данных.Ошибка JDBC «Слишком много соединений»
В этом третьем окне, где обновлена база данных, я использовал jcombobox, где элементы из него загружаются из базы данных.
, когда я отлаживаю его, он работает правильно. Но когда я пытаюсь запустить приложение сверху вниз, отображается окно обновления, но элементы jcombobox не загружаются. он дает ошибку, говорящую слишком много соединений.
Насколько я знаю, я закрыл все соединения правильно.
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String un=jTextField1.getText();
String pwd=jPasswordField1.getText();
if(un.isEmpty()){
JOptionPane.showMessageDialog(this,"User Name is empty");
}
else if(pwd.isEmpty()){
JOptionPane.showMessageDialog(this,"Password is empty");
}
else{
try {
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
Calendar cal = Calendar.getInstance();
ResultSet rs=new DBconnect().getdata("SELECT * FROM user");
rs.next();
if ((rs.getString("Name").equals(un))&&(rs.getString("pw").equals(pwd))){
new DBconnect().putdata("INSERT INTO login (Date,User) VALUES('"+dateFormat.format(cal.getTime())+"','"+un+"')");
new MainWindow().setVisible(true);
this.dispose();
}
else{
JOptionPane.showMessageDialog(this, "Invalid user name or password");
jTextField1.setText("");
jPasswordField1.setText("");
}
rs.close();
} catch (Exception ex) {
Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
выше - мой код форм для входа.
public MainWindow() {
setExtendedState(JFrame.MAXIMIZED_BOTH);
new Thread(){
public void run(){
while(true){
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
DateFormat dateFormat2 = new SimpleDateFormat("yyyy/MM/dd");
Calendar cal2 = Calendar.getInstance();
jLabel1.setText(dateFormat.format(cal.getTime()));
try {
ResultSet rs=new DBconnect().getdata("SELECT COUNT(Pno) FROM medicalhistory WHERE Date ='"+dateFormat2.format(cal2.getTime())+"'");
rs.next();
jLabel4.setText(rs.getString("COUNT(Pno)").toString());
ResultSet rs2=new DBconnect().getdata("SELECT SUM(Amount) FROM income WHERE Date ='"+dateFormat2.format(cal2.getTime())+"'");
rs2.next();
jLabel5.setText(rs2.getString("SUM(Amount)").toString());
rs2.close();
rs.close();
} catch (Exception ex) {
Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}.start();
initComponents();
}
приведенный выше код основного окна, в котором использовались соединения IW. они работают правильно.
public addnewpatient() {
setExtendedState(JFrame.MAXIMIZED_BOTH);
initComponents();
try {
try (ResultSet rs3 = new DBconnect().getdata("SELECT Name FROM drugstock WHERE stockAmount >0")) {
Vector v= new Vector();
while(rs3.next()){
String ids = rs3.getString("Name");
v.add(ids);
jComboBox1.addItem(ids);
}
jComboBox1.addItem("Null");
rs3.close();
}
}
catch (Exception ex) {
Logger.getLogger(addnewpatient.class.getName()).log(Level.SEVERE, null, ex);
}
}
код выше придает слишком много ошибок при подключении.
putdata и getdata - это два метода ive, созданный в классе соединений для удобства.
:) Thanx заранее :)
Прилагайте исключения, которые вы видите в этом посте. – Rajesh