“ 嵌套异常是 java.sql.SQLException: '?' 附近的语法不正确“
" nested exception is java.sql.SQLException: Incorrect syntax near '?' "
我正在尝试通过 Spring 框架的 JdbcTemplate
在我的 Java 应用程序中执行 SQL 语句。尽管查询在 Aqua Data Studio 中 100% 正常工作,但我收到 "bad SQL grammar"
错误。
这是我的 Java 代码:
String entity = GCEnvironmentClient.getGteProperties().getProperty("ENTITY_ID");
InputStream is = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("sql/blotter.sql");
String query = IOUtils.toString(is).concat(entity);
return this.jdbcTemplate.query(query, new BlotterTradeMapper());
需要注意的一件事:我尝试制作 RowMapper
class (BlotterTradeMapper
) return null
对象以避免操纵 ResultSet
.这没有改变任何东西,所以我知道 class 不会导致问题。
这里是查询:
SELECT
inv..trans.com_line1,
inv..trans.trade_acct,
inv..trans.bs_code,
inv..trans.trans_type,
inv..trans.cust_num,
mast..sec_mst.sec_type,
mast..sec_mst.mature_date,
mast..sec_mst.coupon,
inv..trans.trans_num,
inv..trans.trade_date,
inv..trans.cc_code,
inv..trans.settle_date,
inv..trans.other_chrg,
inv..trans.principal,
inv..trans.interest,
inv..trans.basis_prc,
inv..trans.dollar_prc,
inv..trans.quantity,
inv..trans.cusip,
inv..trans.rem_line1,
inv..trans.rem_line2,
mast..sec_mst.dated_date,
mast..sec_mst.des_line1,
mast..groupmst.group_name,
mast..groupmst.group_id,
mast..cust_mst.nam_add1,
inv..trans.fin_rate,
ISNULL(mast..contract.contract_size, 1),
ISNULL(mast..contract.contract_size, 1),
mast..curr_mst.multiplier,
mast..sec_mst.sec_class
FROM
inv..trans,
mast..sec_mst,
mast..cust_mst,
mast..groupmst,
mast..curr_mst,
mast..contract
WHERE
inv..trans.cust_num = mast..cust_mst.cust_num
AND
inv..trans.group_id = mast..groupmst.group_id
AND
inv..trans.cusip = mast..sec_mst.cusip
AND
mast..sec_mst.currency_type = mast..curr_mst.currency_type
AND
mast..sec_mst.contract_code *= mast..contract.contract_code
AND
inv..trans.entity_id = 1
这里是错误:
org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar [query]; nested exception is java.sql.SQLException: Incorrect syntax near '?'. at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:237)
注意查询中没有问号!有人以前见过这样的东西吗?
我在 .sql 文件的顶部发现了一些隐藏字符。这些必须是由 Aqua Data Studio 创建的。甚至 Notepad++ 都没有捡起它们 - 只有 Eclipse 文本编辑器做到了。
我正在尝试通过 Spring 框架的 JdbcTemplate
在我的 Java 应用程序中执行 SQL 语句。尽管查询在 Aqua Data Studio 中 100% 正常工作,但我收到 "bad SQL grammar"
错误。
这是我的 Java 代码:
String entity = GCEnvironmentClient.getGteProperties().getProperty("ENTITY_ID");
InputStream is = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("sql/blotter.sql");
String query = IOUtils.toString(is).concat(entity);
return this.jdbcTemplate.query(query, new BlotterTradeMapper());
需要注意的一件事:我尝试制作 RowMapper
class (BlotterTradeMapper
) return null
对象以避免操纵 ResultSet
.这没有改变任何东西,所以我知道 class 不会导致问题。
这里是查询:
SELECT
inv..trans.com_line1,
inv..trans.trade_acct,
inv..trans.bs_code,
inv..trans.trans_type,
inv..trans.cust_num,
mast..sec_mst.sec_type,
mast..sec_mst.mature_date,
mast..sec_mst.coupon,
inv..trans.trans_num,
inv..trans.trade_date,
inv..trans.cc_code,
inv..trans.settle_date,
inv..trans.other_chrg,
inv..trans.principal,
inv..trans.interest,
inv..trans.basis_prc,
inv..trans.dollar_prc,
inv..trans.quantity,
inv..trans.cusip,
inv..trans.rem_line1,
inv..trans.rem_line2,
mast..sec_mst.dated_date,
mast..sec_mst.des_line1,
mast..groupmst.group_name,
mast..groupmst.group_id,
mast..cust_mst.nam_add1,
inv..trans.fin_rate,
ISNULL(mast..contract.contract_size, 1),
ISNULL(mast..contract.contract_size, 1),
mast..curr_mst.multiplier,
mast..sec_mst.sec_class
FROM
inv..trans,
mast..sec_mst,
mast..cust_mst,
mast..groupmst,
mast..curr_mst,
mast..contract
WHERE
inv..trans.cust_num = mast..cust_mst.cust_num
AND
inv..trans.group_id = mast..groupmst.group_id
AND
inv..trans.cusip = mast..sec_mst.cusip
AND
mast..sec_mst.currency_type = mast..curr_mst.currency_type
AND
mast..sec_mst.contract_code *= mast..contract.contract_code
AND
inv..trans.entity_id = 1
这里是错误:
org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar [query]; nested exception is java.sql.SQLException: Incorrect syntax near '?'. at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:237)
注意查询中没有问号!有人以前见过这样的东西吗?
我在 .sql 文件的顶部发现了一些隐藏字符。这些必须是由 Aqua Data Studio 创建的。甚至 Notepad++ 都没有捡起它们 - 只有 Eclipse 文本编辑器做到了。