java - 保存到 mysql 数据库时出现 jbutton 问题

标签 java swing jdbc swingworker

美好的一天。任何人都可以真正帮助我解决我所面临的数据库问题吗?我想使用 pepraredStatement 插入数据库。但是,每当我添加数据库部分(连接和 pepraredStatement )时,“上传”按钮就会无响应。但是当我删除与数据库相关的任何内容时,我的所有按钮都可以工作。您可以在这里找到代码 http://pastebin.com/euKdWhr2 .

我将非常感谢任何帮助或建议。可能我在数据库部分遗漏了一些东西。

请注意,这不是一个重复的问题,因为我没有找到正确的答案 公共(public)无效actionPerformed(ActionEvent ev) { 字符串文件 = fileField.getText(); SetGetQuestionFileName 模式 = new SetGetQuestionFileName(文件); ConnectToDatabase 数据库 = new ConnectToDatabase(); 尝试 {

        ///////// check whether textfile is empty or not 

        if( ev.getActionCommand().equals("UPLOAD"))
        {
            if(fileField.getText().isEmpty())
            {
                JOptionPane.showMessageDialog(null,"File field can not be empty!!! Please try again.","ALERT", JOptionPane.ERROR_MESSAGE);
            }
            else
                {
                    File fi = new File(fileField.getText());
                    ////////////////  perform upload 

                    try 
                        {

                String sql = "INSERT INTO testsystem.questionnaire (category_questions, questions, correct_answer)" + "VALUES (?, ?, ?)";

                PreparedStatement st =  null;

                Connection dbconnection = database.getConnection();

                st = dbconnection.prepareStatement(sql);

                                if(fi.getAbsoluteFile().exists())
                                {
                                    List<String> lines = Files.readAllLines(Paths.get(fileField.getText()), Charset.defaultCharset());


                                    for (int i = 0; i < lines.size(); i+=10) 
                                        {
                                                String category = lines.get(i);
                                                System.out.println(category);
                                                String question = lines.get(i+1);
                                               System.out.println(question);

                                                String answers =
                                                                lines.get(i+2)+System.lineSeparator()
                                                                +lines.get(i+3)+System.lineSeparator()
                                                                +lines.get(i+4)+System.lineSeparator()
                                                                +lines.get(i+5);
                                                System.out.println(answers);

                                                String correct = lines.get(i+7);
                                                System.out.println("correct answer is: "+correct);
                                                System.out.println("----------------");


                                st.setString(1, category);
                                st.setString(2, answers);
                                st.setString(3, correct);
                                st.executeUpdate(); 

                                    }

                                    JOptionPane.showMessageDialog(null,"File has been successfully uploaded in the database.","NOTIFCATION",JOptionPane.INFORMATION_MESSAGE);
                                }
            else

                    JOptionPane.showMessageDialog(null,"File could not be found. Please try again","ALERT",JOptionPane.ERROR_MESSAGE);
            }

                    catch(SQLException ex)
                {

                }   

                catch(Exception ex)
                {

                }

最佳答案

Swing 是一个单线程框架。任何长时间运行或阻塞的操作,当在 Swing 的 GUI 线程(事件调度线程)的上下文中执行时,都会阻止它更新屏幕。

看看Concurrency in SwingWorker Threads and SwingWorker了解更多详情

关于java - 保存到 mysql 数据库时出现 jbutton 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26939216/

相关文章:

java - 使用 Grizzly 和 Jersey 的 SSL

java - 通过 JWNL 使用 wordnet 时出现运行时错误

java - 创建数据库连接类java

java - pg_hba.conf 中没有条目

java - 从多个线程读取一个 java.util.arrayqueue

java - JAR 中未找到 sqljdbc_auth.dll。 (在 IntelliJ 下)

java - 等效的 SWTTreeNode API

显示信息的 Java Swing 小部件

java - 如何从 JFrame 获取文本

sql-server - 索引超出范围 : JDBC SqlServer exception