我将AnyLogic模型的输出保存到server数据库中。对于非任何逻辑爱好者来说,AnyLogic是基于Java的.但是,我不确定需要为数据库中的列指定哪些数据类型。
到目前为止,我使用的是:
我还有Option list类型的参数,如果我正确理解,这是Java的一种形式。我试图将这些参数保存为varchar,但这(显然)不起作用。此外,我的模型包含各种布尔参数。对于布尔参数,我通过运行以下命令在SQL中添加bit类型的列:
ALTER TABLE myTable
ADD my_bool BIT NOT NULL DEFAULT 0;但是,运行模型将返回此错误。
SQLServerException:无效列名'false‘。导致:无效列名'false‘
具体而言,如何导出Option list和boolean类型的参数?
发布于 2021-02-25 09:19:14
我设法解决了我的部分问题。现在,我可以将Java中的字符串变量存储到SQL数据库中。这一问题是由于不正确地使用引文造成的。
Java对字符串变量使用双引号(例如:"")。SQL需要字符串类列的单个引号(例如:''),例如varchar()和char()。
我不得不将SQL查询修改为:String insertTableSQL = "INSERT INTO test (my_string) VALUES(" +" '"+my_variable_string+"' )";
注意,my_variable_string是Java的衍生物,我是通过执行String my_variable_string= my_enum.name();获得的。
发布于 2021-02-24 13:20:49
这解决了标记为MySQL的原始问题。
我不知道关于“选项单”的所有问题。似乎字符串(具有长度(如varchar(255)) )可以工作。您也可以查看内置的enum类型,尽管我通常不建议使用enum。
我建议使用boolean而不是bit作为boolean的等价物。似乎更有记忆力。
也就是说,MySQL将false理解为一个常数。您可以通过运行以下命令来检查这一点:
select false这也适用于:
select "false"但是,这将返回您指定的错误:
select `false`我怀疑正在生成的代码正在使用此构造。您将需要查看代码--您可能需要找出其他方法来处理这个问题。在MySQL中,您可以为false使用0,这可能解决您的问题。
发布于 2021-02-25 14:26:57
AnyLogic数据库是一个标准的HSQLDB数据库(不是专有的),但是他们添加了AnyLogic客户端功能来定义‘列类型’,就好像它们是Java类型一样(具有用于选项列表的特殊类型和在运行中编译的Java代码)。
如果查看db.script文件(HSQLDB只是将持久DB数据存储为创建表和插入值的SQL脚本),您可以看到底层HSQLDB类型,这些类型与Server类型密切相关。
boolean --> BOOLEAN
double --> DOUBLE
int --> INT
String --> VARCHAR(16777216)
Date --> TIMESTAMP
Code --> VARCHAR(16777216)
Option List --> VARCHAR(255)NB:“Java列类型”应该使非技术用户在查询该列时更容易从Java的角度了解到什么,但是,例如,查询会返回缺少值的nulls,因此boolean列实际上实际上返回了一个Boolean。
那会有帮助的。
https://stackoverflow.com/questions/66351675
复制相似问题