- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 java servlet 和 h2 嵌入式数据库开发学生数据库 Web 应用程序。我需要知道如何找到典型的学生数据库是否存在。因此,如果它不存在,则必须创建它,否则程序应继续使用现有程序。
最佳答案
将 IFEXISTS=TRUE
添加到您的连接 URL 字符串。
你问:
I need to know how to find whether the typical student database exists or not. so that, if it is not there, it must be created or else the program should continue with the existing one.
默认情况下,H2 会自动创建数据库(如果尚不存在)。所以你问题的那部分没有意义。
指定文件位置作为建立DataSource
对象的一部分。这里我们使用org.h2.jdbcx.JdbcDataSource
作为我们对 javax.sql.DataSource
的实现.
private javax.sql.DataSource establishDataSource() {
org.h2.jdbcx.JdbcDataSource ds = Objects.requireNonNull( new JdbcDataSource() ); // Implementation of `DataSource` bundled with H2. You may choose to use some other implementation.
ds.setURL( "jdbc:h2:/path/to/MyDatabase;" );
ds.setUser( "scott" );
ds.setPassword( "tiger" );
ds.setDescription( "An example database." );
return ds ;
}
实例化一个DataSource
对象。将它放在身边,以便在您需要访问数据库时使用。
DataSource dataSource = this.establishDataSource();
…
DataSource
对象不会导致任何事情发生。 DataSource
对象仅包含定位和连接到特定数据库所需的信息片段。
尝试连接到数据库。这是事情开始发生的时候。
try(
Connection conn = dataSource.getConnection() ;
)
{ … }
第一次调用 DataSource#getConnection
导致 H2:
但要回答您的问题标题,请继续阅读。
如果存在
您可以在连接尝试中指定仅当请求的数据库已存在时才应完成连接。此功能使用 IFEXISTS=TRUE
语法。
String url = "jdbc:h2:/path/to/MyDatabase;IFEXISTS=TRUE";
这导致 H2:
Trap当数据库不存在时抛出的异常。
您检查文件系统中是否存在数据库文件,假设您的数据库持久存储(与 in-memory database 相对)。
关于java - 如何在创建新数据库之前检查现有的 h2 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39294691/
我是一名优秀的程序员,十分优秀!