问题标签 [h2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1088 浏览

java - 关系数据库(H2,Java):如何限制外键不匹配同一张表中的另一个外键?

简单的问题。只是想知道这是否可以在我不必在我的 Java 代码中手动强制执行此约束的情况下完成。这两个外键(一起在同一个表中)都指向另一个表,但是对于每一行,它们不能指向同一个外项。

链接文本

0 投票
4 回答
29628 浏览

java - h2(嵌入式模式)数据库文件问题

我的 src 目录(Java、Eclipse)中有一个 h2-database 文件:h2test.db

问题:

  • 从命令行启动 h2.jar(以及端口 8082 上的 h2 浏览器界面),我在 h2test.db 中创建了 2 个表,“test1”和“test2”,并在其中放入了一些数据;

  • 当尝试从 java 代码 (JDBC) 访问它们时,它会抛出“找不到表异常”。Java 代码中的“显示表”显示了一个包含 0 行的结果集。

  • 另外,当从java代码(CREATE TABLE ...等)创建一个新表('newtest')时,之后启动h2.jar浏览器界面时我看不到它;只显示了另外两个表('test1' 和 'test2')(但随后可以从 java 代码访问新创建的表 'newtest')。

我对嵌入式数据库缺乏经验;我相信我在这里做的事情根本上是错误的。我的假设是,我正在访问同一个文件——一次来自 java 应用程序,一次来自 h2 控制台浏览器界面。我似乎无法理解,我在这里做错了什么?

编辑:根据要求,添加一些代码:

Java代码:

这个结果集有 0 行(没有表),而不是向我显示 2 个表。

H2 Console-浏览器界面设置:

EDIT2:我将数据库复制到一个新文件夹。现在,新文件夹中的 db 文件与“newtest”表(来自 java 代码)以及“test1”和“test2”表(来自控制台浏览器 h2 界面)一起显示 - 与旧 db 完全相同文件显示。所以问题仍然存在于 db 文件的副本中。

0 投票
5 回答
17195 浏览

sql - "Create table if not exists" - how to check the schema, too?

Is there a (more or less) standard way to check not only whether a table named mytable exists, but also whether its schema is similar to what it should be? I'm experimenting with H2 database, and

statements apparently only check for the table´s name. I would expect to get an exception if there's a table with the given name, but different schema.

0 投票
1 回答
2974 浏览

java - 关系数据库数组(H2、Java)

关于如何实现数组,我似乎有两种选择,我想知道我应该选择哪一种:

  • 使用 ARRAY 数据类型并(据我了解)有效地将数据对象序列化到数据库中(在我的情况下,它们只是包装的原始类型;不知道另一种方法来完成这项工作)。

  • 为每个数组项使用单独的表和外键映射。

如果你有这方面的经验(尤其是 H2),你会推荐哪个?

0 投票
2 回答
89013 浏览

sql - 通过 sql 脚本插入 BLOB?

我有一个 H2 数据库(http://www.h2database.com),我想通过一个简单的 sql 脚本将一个文件插入到 BLOB 字段中(例如,填充一个测试数据库)。我知道如何通过代码做到这一点,但我找不到如何执行 sql 脚本本身。

我试图通过路径,即

但这失败了。

在代码中(例如 java),很容易创建一个 File 对象并将其传入,但直接从 sql 脚本中,我被卡住了......

任何的想法?

0 投票
2 回答
14580 浏览

java - SQL(Java,h2):检索我刚刚插入数据库的单个项目的唯一 ID 的最佳方法是什么?

我目前的方法是这样的:

这假定最新插入的项目始终具有最高的唯一 ID(主键、自动递增)。这里有什么不对劲。

备择方案?

0 投票
2 回答
1165 浏览

java - 如何获取通过 H2DB 创建的“内存”数据库的流?

我必须创建这样一个机制:

  1. 创建内存(H2DB)数据库;
  2. 创建表格并使用一些数据填充它们;
  3. 获取该数据库的流;
  4. 通过 WebDAV 或其他方式发送该流;

除了“如何将流传输到通过 H2DB 创建的“内存中”数据库之外,我什么都知道?


以及一些解释:

  • 由于某些服务器限制,我无法创建文件;
  • 我需要该流来创建文件;
0 投票
2 回答
84671 浏览

java - H2 和 HSQLDB 哪个更好?

HSQLDB 2.0 即将发布。我想知道它是否会优于 H2,因为据我所知,大多数用户更喜欢 H2 而不是 HSQLDB。我对 HSQLDB 2.0 的 MVCC 支持很感兴趣。我了解到 H2 上的 MVCC 仍处于试验阶段。关于支持/文档​​、并发性、性能,两者之间哪个更好?

0 投票
1 回答
1821 浏览

database - [H2 and Firebird]auto_increment,身份还是触发器加生成器?

在 Firebird 中,拥有自动增量列的唯一方法是设置生成器并将其与触发器一起使用。

在 H2 db 中有 auto_increment 和 identity 关键字可以做到这一点。

什么是最好的方法?

Mysql 也使用了 auto_increment,但是 cucurrence read 和 table lock 存在一些问题,不是吗?

谢谢你。

0 投票
10 回答
149660 浏览

database - 管理 H2 数据库的前端工具

如何使用H2 数据库的集成管理前端?

用于创建表、更改表、添加列等操作。