次のデータソースを使用して MS SQL サーバーに接続しています
<bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close" >
<property name="driverClass" value="net.sourceforge.jtds.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:jtds:sqlserver://<server>:<port>" />
<property name="user" value="${echo_db_user}" />
<property name="password" value="${echo_db_password}" />
</bean>
<bean id="myProviderDAO" class="com.care.dao.impl.DataProviderImpl">
<property name="dataSource" ref="myDataSource" />
</bean>
public class DataProviderImpl extends JdbcDaoSupport{
public Object runQuery(String staticQuery) {
try {
return getJdbcTemplate().queryForList(staticQuery);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
staticQuery は次のとおりです。
Select
sender,
status_dt
FROM
ServiceTickets.dbo.trouble_ticket
WHERE
status_dt BETWEEN '02-17-2010 07:00:00' AND '04-30-2014 05:00:00'
このクエリを実行すると、次の例外が発生します。
org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar [
Select
sender,
status_dt
FROM
ServiceTickets.dbo.trouble_ticket
WHERE
status_dt BETWEEN '02-17-2010 07:00:00' AND '04-30-2014 05:00:00'
]; nested exception is java.sql.SQLException: ORA-00933: SQL command not properly ended
at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:98)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
- コードをデバッグしたときに接続が発生し、接続が取得された場所に渡されました。
- 同じクエリを Toad (クライアントから ms SQL サーバー) で実行すると、正しく実行されます。
- 同じ一連の手順を使用して Qracle DB に接続し、そのクエリを実行しましたが、この問題に直面している MS SQL サーバーの場合にのみ正常に動作します。