Java 如何使我的databaseconnect类允许并发使用
我创建了一个名为Java 如何使我的databaseconnect类允许并发使用,java,class,concurrency,thread-safety,database-connection,Java,Class,Concurrency,Thread Safety,Database Connection,我创建了一个名为databaseconnect的类,该类负责: 连接到数据库,填充组合框的方法,身份验证的方法,插入、删除、修改的方法等等 我遇到的问题是,我实际上只能使用这个类一次 例如,我创建了一个名为Login的JFrame,在这个JFrame中,我使用“databaseconnect”调用其方法authentication 在另一个JFrame中,我调用“databaseconnect”来填充组合框并在表中填充数据 但当我多次使用“databaseconnect”时,程序停止运行 下面是
databaseconnect
的类,该类负责:
连接到数据库,填充组合框的方法,身份验证的方法,插入、删除、修改的方法等等
我遇到的问题是,我实际上只能使用这个类一次
例如,我创建了一个名为Login的JFrame
,在这个JFrame中,我使用“databaseconnect”调用其方法authentication
在另一个JFrame
中,我调用“databaseconnect”来填充组合框并在表中填充数据
但当我多次使用“databaseconnect
”时,程序停止运行
下面是一个代码示例:
1-登录
表单:
private void LoginActionPerformed(java.awt.event.ActionEvent evt) {
con=new databaseconnect();
String a=u.getText();
String b=pas.getText();
con.authentification(a,b);
this.setVisible(false);
}
2-在另一个名为客户机的类中:
public Client() {
databaseconnect con= new databaseconnect();
initComponents();
con.opencn();
con.fillcombo(combobox);
}
现在,当我运行这个程序时,它不会打开
3-数据库连接:
数据库连接
类:
public class databaseconnect extends Login
{
Admin ad=new Admin();
Client cl= new Client();
String url="jdbc:mysql://localhost:3307/bookstore";
String driver="com.mysql.jdbc.Driver";
String user="root";
String pass="root";
Connection cn;
public void opencn()
{
try
{
Class.forName(driver).newInstance();
cn=DriverManager.getConnection(url,user,pass);
System.out.println("Connected To Database");
}catch(Exception e)
{
System.out.println("Error Connecting To Database");
}
}
public void authentification(String a, String b)
{
String sql="SELECT * from admin_login ";
try{
Statement stmt=cn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
System.out.println(sql);
String resultat="";
while(rs.next())
{
System.out.println(a);
System.out.println(b);
String uname= rs.getString("username");
String p= rs.getString("password");
if ((uname.equals(a)) && (p.equals(b)))
{
System.out.println("Login Successful");
ad.setVisible(true);
}
else{
System.out.println("wrong username/password");
}
}
}catch(Exception e)
{
System.out.println(e.getMessage());
}
}
public void fillcombo(JComboBox cmb)
{ String sql= "SELECT * from client";
try{
opencn();
Statement st=cn.createStatement();
ResultSet rs=st.executeQuery(sql);
while(rs.next())
{
cmb.addItem(rs.getString("Client_Name"));
}
}catch(SQLException e){
System.out.println(e.getMessage());
}
}
}
提前感谢:)无论如何,您可能需要显示您的databaseconnect
类。您是否尝试过使用逐步调试来查看程序是否陷入无限循环或类似的情况?好的,请再次检查问题,我编辑了它并添加了databaseconnectdatabaseconnect
extendsLogin
的代码。有没有可能Login form
属于Login
类?没关系,我删除了extends Login,虽然我知道它没有帮助,但它仍然工作得很好,当我创建客户端类并调用“databaseconnect”时,它停止了工作。“现在,当我运行这个程序时,它没有打开”这里到底是什么意思?再说一次,您是否尝试在调试器下运行它?