运行下面的代码为什么这么慢

import java.awt.*;
import javax.swing.*;
import java.sql.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.regex.*;
import java.util.Random;
import static java.awt.BorderLayout.*;
import java.io.File;
import java.io.IOException;
public class SwingDemo
{
Random r;
Link lk,lk1;
ResultSet rs,rs1;
public void init()
{
JFrame jf=new JFrame();
final JPanel jp=new JPanel();
jp.setPreferredSize(new Dimension(300,300));
JPanel jp1=new JPanel();
final JTextField jtf=new JTextField(20);
jp1.setLayout(new FlowLayout(FlowLayout.RIGHT));
JButton jb=new JButton("发送");
JScrollPane jsp=new JScrollPane();
jp.add(jsp);
jf.setLayout(new BorderLayout());
jf.add(jp,NORTH);
jf.add(jp1,SOUTH);
jp1.add(jtf);
jp1.add(jb);

jf.pack();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
jb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String out="";
String result="";
String s=jtf.getText();
if(s.equals(""))
{
JOptionPane.showMessageDialog(null, "不能添加空白内容");

            }
            else if(s.length()<4)
            {
                result=find(s);
            }
            JPanel jp2=new JPanel();
            jp2.setPreferredSize(new Dimension(300,50));
            JTextArea jta1=new JTextArea();
            jta1.setBackground(Color.RED);
            jp2.setLayout(new FlowLayout(FlowLayout.LEFT));
            jp2.add(jta1);
            JPanel jp3=new JPanel();
            jp3.setPreferredSize(new Dimension(300,50));
            JTextArea jta2=new JTextArea();
            jta2.setBackground(Color.YELLOW);
            jp3.setLayout(new FlowLayout(FlowLayout.RIGHT));
            jp3.add(jta2);
            jp.setLayout(new BoxLayout(jp,BoxLayout.Y_AXIS));
            jp.add(jp2);
            jp.add(jp3);
            jta1.setText(s);
            jta2.setText(result);

        }
    });
}
public String find(String s)
{
        String result="";

        try
        {
            String sql="select *from chat1";
            lk=new Link(sql);
            rs=lk.sta.executeQuery(sql);
            while(rs.next())
            {
                String string =new String(rs.getString("question"));
                if(string.equals(s)||string.contains(s)||s.contains(string))
                {
                    try
                    {
                        String sql1="select * from chat where question='"+string+"'";
                        lk1=new Link(sql1);
                        rs1=lk1.sta.executeQuery(sql1);
                        while(rs1.next())
                        {
                            result=new String (rs1.getString("answer"));
                        }

                    }
                    catch(Exception e)
                    {
                        e.printStackTrace();
                    }
                    finally
                    {
                        lk1.closeConn();
                    }
                }
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
            lk.closeConn();
        }
        if(result.equals(""))
        {
            int i=3;
            int k=r.nextInt(i);
            if(k==0)
                result="asdfsdaf";
            else if(k==1)
                result="rtfdsg";
            else if(k==2)
                result="fgasdd";
        }
        return result;

}
public static void main(String[] args)
{
    new SwingDemo().init();
}

}
连接数据库的代码
import java.sql.*;
public class Link{
//ResultSet rs;//声明结果集引用
Connection conn;//声明Connection引用
Statement sta;
public Link(String ml){//有参构造器
try{
Class.forName("com.mysql.jdbc.Driver");//加载驱动器
String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8";//url指向要访问的mysql数据库名
String name="root";//用户名
String pwd="123456";
conn=DriverManager.getConnection(url,name,pwd);//连接数据库
sta=conn.createStatement();//创建语句
//rs=sta.executeQuery(ml);//执行查询得到的结果集
}catch(SQLException e){//捕获异常并打印
e.printStackTrace();
}
catch(ClassNotFoundException e){
e.printStackTrace();}
}
public void closeConn(){//关闭数据库连接的方法
try{
//关闭结果集,语句,连接
//if(rs!=null)
// rs.close();
if(sta!=null)
sta.close();
if(conn!=null)
conn.close();
}catch(SQLException e){//捕获异常并打印
e.printStackTrace();
}
}
}

2个回答

代码不够优化,看下哪里可以优化下

有问题 你有多次执行SQL 语句,每次都是重新连接数据库
改一改,数据库连接只做一次,然后多次查询,最后用完了关闭

qq_19589065
王爱沉 怎么改正呢
接近 4 年之前 回复
qq_19589065
王爱沉 怎么改正呢
接近 4 年之前 回复
qq_19589065
王爱沉 怎么改正呢
接近 4 年之前 回复
qq_19589065
王爱沉 怎么改正呢
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!

相似问题

2
为什么这个代码运行的时候不报错,但是对方计算机收不到消息?请问是VC++没有编译么?
3
安卓服务器端代码运行
2
为什么在IE中运行这段代码会提示type为空或不是对象?为什么border属性会无法移除?
3
Java快速排序,帮忙看一下下面的代码有没有错!
1
intellij idea javaee项目js代码改变后,重新运行后,js代码,还是和以前一样
1
codeblocks可运行代码,而生成的exe文件不能运行
1
MFC程序运行的时候得到执行的代码行数,怎么得到程序运行的进度信息呢?
1
手机恶搞程序代码的编写和运行方法
2
为什么在ecplise ADT中的src文件里的java代码没有实例化就可以运行?
3
如何写一个可以编写和运行代码的网页
3
java运行时关于代码块的运行顺序
3
C++中的常量指针问题,下面这段代码为什么会运行出错??
1
请问下面代码运行的结果是什么?
4
web项目运行很慢,不是代码问题
3
android studio 一运行虚拟机代码就报错cannot resolve symbol各种符号
1
epp4的代码点击运行没有反应,在浏览器输入地址里却可以运行,这是为什么?
2
为什么下面两段python代码运行速度大不相同?
3
有关sublime text运行结果重复,修改代码后运行结果仍然不变的问题
2
想知道apk源代码,在elpise中运行
2
【简单java问题】关于从身份证号里提取信息的代码,运行不出来。。。