首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AnyLogic的SQL数据类型

AnyLogic的SQL数据类型
EN

Stack Overflow用户
提问于 2021-02-24 13:14:57
回答 3查看 175关注 0票数 0

我将AnyLogic模型的输出保存到server数据库中。对于非任何逻辑爱好者来说,AnyLogic是基于Java的.但是,我不确定需要为数据库中的列指定哪些数据类型。

到目前为止,我使用的是:

  • double in AnyLogic : float in SQL
  • string in AnyLogic : varchar in SQL
  • int in AnyLogic : int in SQL

我还有Option list类型的参数,如果我正确理解,这是Java的一种形式。我试图将这些参数保存为varchar,但这(显然)不起作用。此外,我的模型包含各种布尔参数。对于布尔参数,我通过运行以下命令在SQL中添加bit类型的列:

代码语言:javascript
复制
ALTER TABLE myTable 
   ADD my_bool BIT NOT NULL DEFAULT 0;

但是,运行模型将返回此错误。

SQLServerException:无效列名'false‘。导致:无效列名'false‘

具体而言,如何导出Option listboolean类型的参数?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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();获得的。

票数 0
EN

Stack Overflow用户

发布于 2021-02-24 13:20:49

这解决了标记为MySQL的原始问题。

我不知道关于“选项单”的所有问题。似乎字符串(具有长度(如varchar(255)) )可以工作。您也可以查看内置的enum类型,尽管我通常不建议使用enum

我建议使用boolean而不是bit作为boolean的等价物。似乎更有记忆力。

也就是说,MySQL将false理解为一个常数。您可以通过运行以下命令来检查这一点:

代码语言:javascript
复制
select false

这也适用于:

代码语言:javascript
复制
select "false"

但是,这将返回您指定的错误:

代码语言:javascript
复制
select `false`

我怀疑正在生成的代码正在使用此构造。您将需要查看代码--您可能需要找出其他方法来处理这个问题。在MySQL中,您可以为false使用0,这可能解决您的问题。

票数 1
EN

Stack Overflow用户

发布于 2021-02-25 14:26:57

AnyLogic数据库是一个标准的HSQLDB数据库(不是专有的),但是他们添加了AnyLogic客户端功能来定义‘列类型’,就好像它们是Java类型一样(具有用于选项列表的特殊类型和在运行中编译的Java代码)。

如果查看db.script文件(HSQLDB只是将持久DB数据存储为创建表和插入值的SQL脚本),您可以看到底层HSQLDB类型,这些类型与Server类型密切相关。

代码语言:javascript
复制
boolean --> BOOLEAN
double --> DOUBLE
int --> INT
String --> VARCHAR(16777216)
Date --> TIMESTAMP
Code --> VARCHAR(16777216)
Option List --> VARCHAR(255)

NB:“Java列类型”应该使非技术用户在查询该列时更容易从Java的角度了解到什么,但是,例如,查询会返回缺少值的nulls,因此boolean列实际上实际上返回了一个Boolean

那会有帮助的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66351675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档