Anylogic:将参数值写入数据库表

Posted

技术标签:

【中文标题】Anylogic:将参数值写入数据库表【英文标题】:Anylogic: Write parameter value into Database table 【发布时间】:2021-05-10 04:52:57 【问题描述】:

我正在尝试将 Anylogic 中的参数值写入数据库表的特定单元格。该参数在我的 main 中声明,并通过函数中的特定计算获取其值。现在我想将计算的值存储在数据库表中。

我尝试过使用

INSERT INTO query (executeStatement("INSERT INTO eu (country, capital) VALUES ('Croatia', 'Zagreb')"); --> example from help)

…但我无法在查询中使用特定参数/作为值。我只能写直接输入(如“克罗地亚”),但不能写参数。最后,我希望表从参数中获取当前值并将值插入表中。 我在帮助功能中找到了一个插入连接工具,可惜只有专业版才有。

有人知道如何处理这个问题吗? 谢谢你,周末愉快!

【问题讨论】:

【参考方案1】:

我不知道我是否完全理解您的需求,但如果您想做的只是将值插入表中,那么您在“executeStatement”中所做的实际上就足够了:

INSERT INTO eu (country, capital) VALUES ('Croatia', 'Zagreb')

如果您所说的“特定单元格”实际上是替换给定行中现有字段的内容,您想改用UPDATE

UPDATE eu SET country='New country', capital='New capital' WHERE <some criteria matching targeted row>

警告:不要忘记WHERE 语句,否则表的每一行都会被这些相同的新值破坏。

如果您要做的是插入一个或多个新行,其中填充了数据库中已经存在的内容,那么您可以直接从 SELECT 查询构造数据集:

INSERT INTO eu (country, capital)
 SELECT country_field, capital_field
   FROM some_table
  WHERE some_criteria

UPDATE 语句之后的 SELECT 查询绝对可以是任何东西。如果需要,它也可以参考同一个表。唯一的要求是形成与目标字段具有相同结构和相同类型(至少兼容)的行。

【讨论】:

感谢您的评论,更新声明看起来很有希望!我也更新了我的问题,所以希望我的问题现在更清楚了。【参考方案2】:

您需要调整定义 SQL 语句的字符串。

而不是

"INSERT INTO eu (country, capital) VALUES ('Croatia', 'Zagreb')"

你写

"INSERT INTO eu (country, capital) VALUES ('"+myParam1+", '"+myParam2+"')"

假设您有 2 个 String 类型的参数来保存字符串文本。

您的 dbase 列类型必须与您要写入的参数(或变量)类型匹配

小心上面的 ' 和 " 符号

【讨论】:

您好本杰明,感谢您的评论!我还有两个关于我的代码的问题,我将把我的代码放到这个线程的另一个答案中。如果你能帮助我会很棒:) @Pumluk 请将新问题作为新的 SOF 问题,这不是讨论区,请参阅 ***.com/help/how-to-ask :) (如果此答案有帮助,请点赞以供其他人查看)跨度> 感谢您的提示!我将通过“如何提问”:) 不幸的是,由于缺少声誉,我的投票没有显示出来......我昨天把我的问题作为新的 SOF 问题,在我意识到这是正确的方法之后。跨度>

以上是关于Anylogic:将参数值写入数据库表的主要内容,如果未能解决你的问题,请参考以下文章

Anylogic Database怎么写在同一行?

如何对 Anylogic 中的表进行动态引用?

如何从 AnyLogic 数据库表中读取分布信息

Anylogic系统建模,使用excel表作为数据库

来自excel anylogic的三维数组

AnyLogic - 使用 Key-Value 数据库连接对象