如何将数据库中列出的值存储到 Anylogic 8.7.1 中的变量?

How to store listed values from a database to variables in Anylogic 8.7.1?

我正在 Anylogic 8.7 中创建一个基于代理的模型。有一点我想使用查询从数据库 table(rs_table) 中获取一个值列表,这里是 anylogic 在指定位置写入的 Java 代码地点:

(int) selectFrom(rs_table) .where(rs_table.tr.eq(1)) .list(rs_table.impact)

但我不知道如何存储这些值以及如何一一获取它们。如果你能帮助我,我将不胜感激。

我会使用集合。从“代理”托盘添加一个集合元素。该集合应具有以下属性:

  • 集合Class:LinkedList
  • 元素Class:整数

使用以下代码:

collection.addAll(
selectFrom(rs_table) .where(rs_table.tr.eq(1)) .list(rs_table.impact)
);

现在,您可以按如下方式访问集合中的值:

collection.get(i);

插入数据库查询向导的“迭代返回的行并执行某些操作”选项正是为此而设计的。它生成循环遍历返回列表并将每一列的值打印到控制台的查询代码(通过 traceln 调用);您只需将循环中的代码替换为您实际想要为每个返回的行执行的操作(其中模板代码向您展示了如何获取该行中每一列的值)。

向导(如果您使用 QueryDSL 表单)将生成如下代码:

List<Tuple> rows = selectFrom(rs_table)
    .where(rs_table.tr.eq(1))
    .list();

for (Tuple row : rows) {
    traceln(
        row.get( rs_table.tr ) + "\t" + 
        row.get( rs_table.impact )
    );
}

(除了 trimpact 之外的任何其他 table 列都有额外的 row.get 行。

(在 Java 术语中,查询的 list 函数 returns ListTuple 个对象,如代码所示。)