0

我对我的 java 有点生疏,对 JDBC 连接过程很陌生。我的朋友给我发了一个他遇到问题的小型 spring 应用程序。

我需要做的就是从 SQL 数据库中提取几列并将它们显示在页面上。我的 JDBC 连接有以下代码。

    Connection connection = null;
    PreparedStatement stmt = null;
    ResultSet rs = null;
    List<Product> products = new ArrayList<Product>();
    try 
    {
        Class.forName("org.hsqldb.jdbcDriver");
        System.out.println("Connected to database!");
    }
    catch(ClassNotFoundException ex)
    {
        System.out.println("Error: unable to load driver class!");
        System.exit(1);
    }

    String DATABASE_URL = "jdbc:hsqldb:hsql://${jdbc.host}";
    connection = DriverManager.getConnection(DATABASE_URL, "sa", "");

    stmt = connection.prepareStatement("SELECT id,description,price FROM products ");
    rs = stmt.executeQuery();

    while(rs.next())
    {
        Product prod = new Product();
        prod.setId(rs.getInt("id"));
        prod.setDescription(rs.getString("description"));
        prod.setPrice(rs.getDouble("price"));
        products.add(prod);
    }

我的问题是关于给出的数据库 URL。它位于具有其他 jdbc 属性的另一个文件中。它说这jdbc:hsqldb:hsql://${jdbc.host}是 URL,但这看起来不像我在搜索中找到的其他数据库 URL。我觉得我应该{jdbc.host}用别的东西代替,但我不知道那可能是什么。

这个对吗?还是有另一种获取 URL 的方法?我假设这是我的问题,因为我对从数据库中提取数据后会出现的其余代码非常有信心。

4

2 回答 2

0

1) jdbc.host 需要与其他属性一起出现在属性文件中 2) 此属性文件需要在应用程序 context.xml 文件中提及并使用 PropertyPlaceholderConfigurer 读取

当应用程序上下文被加载时,它会从这个属性文件中读取,因此在这段代码中,当它尝试执行 ${jdbc.host} 时,它会从上下文中获取它,因为它在内存中可用。

如果检查了以上两件事,您不必进行任何代码更改。

于 2013-08-22T21:25:33.790 回答
0

似乎 ${jdbc.host} 值正在从外部属性文件中读取。在您的项目中搜索,jdbc.host假设您的项目文件夹中有属性文件,您将找到实际值。

于 2013-08-22T21:27:37.467 回答