如何导出Java中的数据库应用程序以使其正常工作

问题描述 投票:0回答:1

几周前我提出了一个关于“如何将数据库嵌入到Java中”的问题。 感谢你,我成功地用 H2 db 做到了这一点。我制作了一个简单的应用程序,您可以在单击插入按钮时插入姓名,并在按下显示按钮时在 JTextArea 中显示姓名。在 Eclipse 中,当按下插入和显示按钮时,可以完美工作。 这是我的问题: 我导出项目,选择 Runnable JAR 文件等,当我从桌面启动应用程序并单击显示按钮时,数据库中的数据不会显示在 JTextArea 上。 为什么会发生这种情况? 这是部分代码:

    static final String driver = "org.h2.Driver";
            static final String DB_URL = "jdbc:h2:lib/database";
            Connection conn = null;
    public void sql(){
                try{
                    Class.forName(driver);
                    System.out.println("Connect to my database");
                    conn = DriverManager.getConnection(DB_URL, "root", "#mysql");
                    System.out.println("Is connect");
                }catch(SQLException sql){
                    sql.printStackTrace();
                }catch(Exception e){
                    e.printStackTrace();
                }   
        }
class insertClass implements ActionListener{
        public void actionPerformed(ActionEvent ev){
            try{
                String update = "INSERT INTO bazadedate.persoane(Name, Surname) values('"+ne.getText()+"', '"+se.getText()+"')";
                Statement st;
                st = conn.createStatement();
                st.executeUpdate(update);
            }catch(SQLException s){
                s.printStackTrace();
            }
        }
    }

    class showClass implements ActionListener{
        String name, surname;
        public void actionPerformed(ActionEvent ev){
            try{
                String show = "SELECT * FROM bazadedate.persoane";
                Statement st;
                ResultSet rs;
                st = conn.createStatement();
                rs = st.executeQuery(show);
                while(rs.next()){
                    name = rs.getString("Name");
                    surname = rs.getString("Surname");
                    text.append(name + " " + surname + "\n");
                }
            }catch(SQLException s){
                s.printStackTrace();
            }
        }
    }
java h2
1个回答
1
投票

我建议使用

jdbc:h2:~/data/databaseName
。这是相对于当前用户主目录的。或者使用
jdbc:h2:/data/databaseName
,这是绝对路径。

我建议避免使用

jdbc:h2:lib/database
形式的数据库 URL。在最新版本的 H2 中,这实际上不起作用并会抛出异常。数据库 URL 的含义是数据库文件存储在与
进程
当前工作目录相对的目录lib中。当前工作目录“通常”是您启动应用程序的位置。如果您使用不同的应用程序(不在同一目录中),则使用此数据库 URL 最终会得到不同的数据库。
© www.soinside.com 2019 - 2024. All rights reserved.