我有一个构建和执行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();
发布于 2012-12-16 21:18:52
go
不是SQL命令,它是eclipse中的命令。它用于分隔查询批次。
要在SQL中运行查询,请删除go
命令(如果可能,在不更改结果的情况下),或者在go
命令上拆分文件并一次运行一个批处理。
https://stackoverflow.com/questions/13905464
复制