H2 嵌入式数据库 intellij idea <-> 源文件
H2 embedded database intellij idea <-> sources files
这里有问题但不明白在哪里,我正在尝试将 H2 数据库用作我的 java 项目的本地“嵌入式”数据库。因此,在生成我的数据库之后,我创建了 table 并使用 intellij 数据库控制台进行了示例数据,但是当我尝试连接源文件时,我的请求失败了
这是我的 intellij 条目:
https://i.stack.imgur.com/F5Qo9.png
这是我的源文件条目:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Database {
private Connection conn;
private Statement st;
public Database() {
try {
Class.forName("org.h2.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
this.conn = DriverManager.getConnection("jdbc:h2:" + "./ava", "root", "password");
System.out.println("Status : connected");
st = conn.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
}
我只是不明白为什么我无法访问我的数据,我有
org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "POSTE" non trouvée
Table "POSTE" not found; SQL statement:
SELECT * FROM POSTE [42102-200]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:453)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:429)
at org.h2.message.DbException.get(DbException.java:205)
at org.h2.message.DbException.get(DbException.java:181)
at org.h2.command.Parser.readTableOrView(Parser.java:7628)
(...)
当我尝试请求“SELECT * FROM POSTE”时
./ava
是相对数据库路径。 .
表示进程的当前工作目录。您的 IDE 和从 IDE 启动的应用程序通常具有不同的工作目录。
您需要使用绝对数据库路径(C:\path\to\db
或 /path/to/db
),或者您可以使用相对于用户主目录的路径(~/…
)。
您还需要确保 IDE 中的数据库工具和您的应用程序都使用完全相同版本的 H2,因为您使用的是嵌入式数据库。当您使用具有相同嵌入式数据库文件的不同版本的 H2 时,此文件可能已损坏。 (当您使用 H2 服务器进程时,您可以使用不同版本的 H2 驱动程序安全地连接到它。)
这里有问题但不明白在哪里,我正在尝试将 H2 数据库用作我的 java 项目的本地“嵌入式”数据库。因此,在生成我的数据库之后,我创建了 table 并使用 intellij 数据库控制台进行了示例数据,但是当我尝试连接源文件时,我的请求失败了
这是我的 intellij 条目: https://i.stack.imgur.com/F5Qo9.png
这是我的源文件条目:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Database {
private Connection conn;
private Statement st;
public Database() {
try {
Class.forName("org.h2.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
this.conn = DriverManager.getConnection("jdbc:h2:" + "./ava", "root", "password");
System.out.println("Status : connected");
st = conn.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
}
我只是不明白为什么我无法访问我的数据,我有
org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "POSTE" non trouvée
Table "POSTE" not found; SQL statement:
SELECT * FROM POSTE [42102-200]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:453)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:429)
at org.h2.message.DbException.get(DbException.java:205)
at org.h2.message.DbException.get(DbException.java:181)
at org.h2.command.Parser.readTableOrView(Parser.java:7628)
(...)
当我尝试请求“SELECT * FROM POSTE”时
./ava
是相对数据库路径。 .
表示进程的当前工作目录。您的 IDE 和从 IDE 启动的应用程序通常具有不同的工作目录。
您需要使用绝对数据库路径(C:\path\to\db
或 /path/to/db
),或者您可以使用相对于用户主目录的路径(~/…
)。
您还需要确保 IDE 中的数据库工具和您的应用程序都使用完全相同版本的 H2,因为您使用的是嵌入式数据库。当您使用具有相同嵌入式数据库文件的不同版本的 H2 时,此文件可能已损坏。 (当您使用 H2 服务器进程时,您可以使用不同版本的 H2 驱动程序安全地连接到它。)