从 C# 使用 H2 数据库

Posted

技术标签:

【中文标题】从 C# 使用 H2 数据库【英文标题】:Working with H2 database from C# 【发布时间】:2016-08-03 15:01:48 【问题描述】:

我可以在下面提到的 URL 的帮助下从我的 C# 应用程序连接到 H2 数据库

http://www.h2database.com/html/advanced.html#microsoft_dot_net

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

//Working
ResultSet rs = stat.executeQuery("SELECT 'Hello World'");
while (rs.next())

    Console.WriteLine(rs.getString(1));


//Not Working
ResultSet rs1 = stat.executeQuery("SELECT * FROM TEST");
while (rs1.next())

    Console.WriteLine(rs1.getString(1));

我已将代码“SELECT 'Hello World'”更改为“SELECT * FROM TEST”,其中“TEST”是表名。 我收到 table not found 错误。但该表存在于 H2 数据库中。

编辑 @ Nick Bull-非常感谢您的帮助。由于某种原因,无法通过 c# 代码访问在“H2 控制台”中创建的表。我已经尝试过您的逻辑,从 C# 代码创建表,它有效!!。但它没有显示在 H2 控制台中。

还有一件事,“executeQuery”不适用于我创建新表,我使用了“executeUpdate”(对于可能有帮助的人)

【问题讨论】:

【参考方案1】:

我在 Java 中经常使用 h2。我认为在 c# 中创建表时可以在 c# 中访问表的原因是因为您正在查看的数据库与您在控制台中查看的数据库不同。也许重新检查您的连接字符串(在 c# 和控制台中)。

如果 h2 驱动程序默认不存在数据库,则会创建这些数据库。

【讨论】:

以上是关于从 C# 使用 H2 数据库的主要内容,如果未能解决你的问题,请参考以下文章

无法从 h2 获取数据

MemSQL 和 H2 比较

如何使用 H2 嵌入式数据库创建 H2 内存数据库

从控制台创建 H2 数据库

尝试使用 Quarkus 从本地 H2 数据库中检索所有行

使用 H2 数据库的 JDBC 中的年份从负 -509 变为正 510