如何从Java& amp; H2 DB

时间:2015-12-13 06:35:22

标签: java database eclipse jdbc h2

我对Eclipse& Java,目前正在处理我需要实现第一个数据库的项目。

因此,我尝试连接Eclipse和H2数据库。虽然H2数据库部分本身工作得很好,但我无法弄清楚如何将它连接到Eclipse。

我创建了以下课程并尝试按照网站上的说明执行所有操作:

package srpTracking;

import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import org.h2.tools.DeleteDbFiles;

public class DatabaseConnector {

    public static void main(String... args) throws Exception {
        DeleteDbFiles.execute("~", "test", true);

        Class.forName("org.h2.Driver");
        Connection conn = DriverManager.getConnection("jdbc:h2:~/test");
        Statement stat = conn.createStatement();


        stat.execute("create table test(id int primary key, name varchar(255))");
        stat.execute("insert into test values(1, 'Hello')");
        ResultSet rs;
        rs = stat.executeQuery("select * from test");
        while (rs.next()) {
            System.out.println(rs.getString("name"));
        }
    }
        stat.close();
        conn.close();
 } 

我得到最后两行代码的标识符错误,但它也没有连接任何东西。

我将H2.jar文件复制到名为lib的子文件夹中的项目文件夹中。

不幸的是我出于某种原因无法安装DTP插件,因为我显然错过了'org.eclipse.core.runtime'文件。

关于连接Java和H2的代码,我需要更改什么? 另外,我是否需要将H2文件复制到特定文件夹中?

1 个答案:

答案 0 :(得分:1)

考虑对您的主要进行这些更改。通过使用try-with-resource,您可以将jVM附近委托 - 还有一个额外的好处,即使在异常的情况下,您也不需要关闭它们。

为什么之前没有工作?您的变量超出范围 - 您尝试在 main()结束后关闭

public static void main(String... args) throws Exception {
    DeleteDbFiles.execute("~", "test", true);

    Class.forName("org.h2.Driver");
    try (Connection conn = DriverManager.getConnection("jdbc:h2:~/test"); 
            Statement stat = conn.createStatement()) {
        stat.execute("create table test(id int primary key, name varchar(255))");
        stat.execute("insert into test values(1, 'Hello')");
        try (ResultSet rs = stat.executeQuery("select * from test")) {
            while (rs.next()) {
                System.out.println(rs.getString("name"));
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}