0

我有一个构建和执行 sql 语句/字符串的 java 应用程序。当我从 Eclipse 运行应用程序时,一切正常。

但是当我运行已部署/二进制应用程序(从二进制文件中读取 .sql 资源)时,我收到以下错误:

Exception in thread "main" java.lang.RuntimeException: Error executing sql:
..
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'IF'.

从 Eclipse 运行和运行已部署的应用程序时,我尝试将 sql 字符串写入文件。除了这些小差异之外,这两个文件几乎相同:

1)工作字符串以:'go'开头

2) 工作字符串在 IF 之前有 'go'

任何想法为什么源版本有这些标签而构建版本没有?我使用 gradle 构建并将编译器设置为使用 UTF-8:

[project.compileJava, project.compileTestJava]*.options*.encoding = 'UTF-8'

这就是我从 jar 文件中读取文件的方式:

  InputStream inputStream = jarFile.getInputStream(entry);
  StringWriter writer = new StringWriter();
  IOUtils.copy(inputStream, writer, "UTF-8");
  String string = writer.toString();
4

1 回答 1

1

go不是 SQL 突击队,它是 Eclipse 中的突击队。它用于分隔查询批次。

要在 SQL 中运行查询,请删除go命令(如果可能,不更改结果),或在go命令上拆分文件并一次运行一批。

于 2012-12-16T21:18:52.200 回答