2
String myQuery1  = "insert into mytable(mycol) values(myval) \ngo";
String myQuery2  = "insert into mytable(mycol) values(myval2) \ngo";
String myQuery = myQuery1 + myQuery2;

Query query = myEntityManager.createNativeQuery(myQuery);
List<?> insertResultList = queryInsertDefaults.getResultList();

使用 eclpise 调试器我可以看到使用的字符串,当我复制并粘贴到 sql server management studio 时它工作正常 - 所以我猜这与不喜欢多行语句的实体管理器有关/go ... ?

感激地收到任何建议(是的,我知道 stringbuilder 等),我得到的错误是:

 SQL Error: 102, SQLState: S0001
 Incorrect syntax near 'go'.

编辑 结果表明实体管理器和查询类不支持插入。所以我必须使用准备好的语句或持久化对象。

4

1 回答 1

2

来自 MSSQL 文档:“GO 不是 Transact-SQL 语句;它是 sqlcmd 和 osql 实用程序以及 SQL Server Management Studio 代码编辑器识别的命令。”

这就是为什么它在 SSMS 中有效,但在“直接”发送到数据库时无效。只需将其从您的 INSERT 语句中完全删除即可。

于 2010-09-28T13:03:50.103 回答