gpt4 book ai didi

Java swing 与远程 mysql

转载 作者:行者123 更新时间:2023-11-29 12:21:53 25 4
gpt4 key购买 nike

场景:

我开发了一个 Java/Swing/MySQL 应用程序。当 MySQL 和 Swing 应用程序安装在同一台计算机上时,以下代码可以正常工作。

代码:

public static Connection ConnectDB(){
try{
String userName = "root";
String password = "chen";
String url = "jdbc:mysql://localhost/javaandmysqltut";
Connection conn;
conn = DriverManager.getConnection (url, userName, password);

//JOptionPane.showMessageDialog(null,"Connection Established");
return conn;
}catch (Exception e){
JOptionPane.showMessageDialog(null,"Cannot connect to database server"+e);
return null;
}
}

问题:

现在,我想在具有远程集中数据库的多台计算机上安装该应用程序。我已将连接参数中的“locahost”替换为远程服务器的 IP 地址。它可以连接到数据库,但应用程序变得非常非常慢并且没有响应。

最好/推荐的方法是什么?

最佳答案

正如所建议的那样,并且由于您似乎不熟悉它,这很可能是由于您在负责所有应用程序图形渲染的同一线程上进行与数据库相关的操作,事件调度线程 (EDT)。

例如,您有类似这样的东西(有一段时间没有做过 Swing,所以不完全是可编译的代码):

button.addActionListener(new ...
@Override
public void actionPerformed(...) {
Database Operations
}

这意味着您的应用程序使事件调度线程忙于处理数据库事务,这意味着您的 EDT 无法满足用户的要求,因为您现在需要考虑网络连接速度。

要解决此问题,您需要将您的应用程序设置为 multi-threaded我担心这可能不是一个简单的任务,因为它可能需要您重新设计您的应用程序。

编辑:根据评论中的问题,您可以这样做:

button.addActionListener(new ...
@Override
public void actionPerformed(...) {
new Thread(new Runnable() {
@Override
public void run() {
Database Operations
}
}).start();
}

上面将产生一个新线程,您的数据库操作将在其中执行。这当然是一个简单化的观点。问题是让您的应用程序在等待新数据时等待,但不会挂起。为此,您需要研究并发教程。

关于Java swing 与远程 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28881379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com