有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

h2如何在Java中导出数据库应用程序以正常工作

几周前,我提出了一个关于“如何将数据库嵌入Java”的问题。 多亏了你,我用H2 db成功地做到了这一点。我制作了一个简单的应用程序,当点击insert按钮时插入姓名,当按下show按钮时在JText区域中显示姓名。在Eclipse中,当按下insert和show按钮时,可以完美地工作。 我的问题是: 我导出项目,选择Runnable JAR file等。当我从桌面启动应用程序并单击show按钮时,数据库中的数据不会显示在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();
            }
        }
    }

共 (1) 个答案

  1. # 1 楼答案

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

    我建议避免使用jdbc:h2:lib/database形式的数据库URL。在最新版本的H2中,这实际上不起作用,并引发异常。数据库URL的意思是数据库文件存储在相对于进程当前工作目录的目录lib中。当前工作目录通常是启动应用程序的位置。如果您使用不同的应用程序(不在同一目录中),那么使用此数据库URL,您将得到不同的数据库