Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 此查询适用于MySQL,但不适用于';因为语法的原因,我不能在MS Access上工作,为什么?_Java_Ms Access - Fatal编程技术网

Java 此查询适用于MySQL,但不适用于';因为语法的原因,我不能在MS Access上工作,为什么?

Java 此查询适用于MySQL,但不适用于';因为语法的原因,我不能在MS Access上工作,为什么?,java,ms-access,Java,Ms Access,在我获得dump的内容后,出现了一个CREATE TABLE查询,但由于语法错误,此查询在MS Access上不起作用 以下是来自dump文件的原始查询(可在Sqlite和MySQL上使用): 删除defaultnull并将int(11)更改为integer后,执行该命令 我可以发现这个问题,但在将来,我是否会遇到更多问题?当您移植到不同的后端环境时,您应该始终了解支持的数据类型,这里也是供访问的。是的,从MySQL移植可能会遇到更多这样的问题 还要注意文档状态(以防您决定只使用Access作为

在我获得
dump
的内容后,出现了一个
CREATE TABLE
查询,但由于
语法错误
,此查询在MS Access上不起作用

以下是来自
dump
文件的原始查询(可在Sqlite和MySQL上使用):

删除
defaultnull
并将
int(11)
更改为
integer
后,执行该命令


我可以发现这个问题,但在将来,我是否会遇到更多问题?

当您移植到不同的后端环境时,您应该始终了解支持的数据类型,这里也是供访问的。是的,从MySQL移植可能会遇到更多这样的问题

还要注意文档状态(以防您决定只使用Access作为前端)

Microsoft Access数据库引擎不支持使用 使用非Microsoft Access创建表或任何DDL语句 数据库引擎数据库。改用DAO创建方法


当您移植到不同的后端环境时,您应该始终了解支持的数据类型,这里也是供访问的。是的,从MySQL移植可能会遇到更多这样的问题

还要注意文档状态(以防您决定只使用Access作为前端)

Microsoft Access数据库引擎不支持使用 使用非Microsoft Access创建表或任何DDL语句 数据库引擎数据库。改用DAO创建方法


COUNT
是SQL保留关键字;它用作确定与查询匹配的行数的函数。MySQL和Sqlite非常宽松,允许您将其用作列名,因为它们可以区分您是将其用作列名还是函数名,但在技术上是不正确的。更改列名


此外,Access的数据类型与标准SQL不太匹配;前面答案中提供的链接应该会有所帮助。您可能需要将列定义为与所需大小相匹配的LONG。

COUNT
是SQL保留关键字;它用作确定与查询匹配的行数的函数。MySQL和Sqlite非常宽松,允许您将其用作列名,因为它们可以区分您是将其用作列名还是函数名,但在技术上是不正确的。更改列名


此外,Access的数据类型与标准SQL不太匹配;前面答案中提供的链接应该会有所帮助。您可能需要将列定义为与所需大小相匹配的长列。

是。使用MS Access可能会出现很多问题。只是说实话,别这么做。MS Access不适合有这么多备选方案的用途。最重要的问题是缺乏良好的并发支持、文件锁定、糟糕的SQL支持、特殊的bug和一般性问题。事实上,这正是@anakata提到的问题。@PaulSullivan:谢谢,看看会发生什么只是一个有趣的问题,我实际上没有使用MS Access。是的。使用MS Access可能会出现很多问题。只是说实话,别这么做。MS Access不适合有这么多备选方案的用途。最重要的问题是缺乏良好的并发支持、文件锁定、糟糕的SQL支持、特殊的bug和一般性问题。事实上,正如@anakata提到的,这正是我问的问题。@PaulSullivan:谢谢,这只是一个有趣的问题,看看会发生什么,我实际上没有使用MS Access。你可以使用方括号[COUNT]为了使用保留关键字,或者更好地重命名字段。(名称在Access中也是保留的,但不在SQL中。)您可以使用方括号[COUNT]来使用保留关键字,或者更好的方法是重命名字段。(名称也保留在Access中,但不保留在SQL中。)
 String query ="CREATE TABLE PATIENT("
       + "  ID varchar(45) NOT NULL,"
       + "  NAME varchar(255) DEFAULT NULL,"
       + "  COUNT int(11) DEFAULT NULL,"
       + "  PRIMARY KEY (ID)"
       + ")";