Oracle 连接使用 Spring jdbc 模板,ORA-12514
Oracle connection using Spring jdbc template, ORA-12514
我是 Spring JDBC 模板的新手。我正在尝试 运行 一种你好世界程序。
我的问题是如果我将 url 定义为:
jdbc:oracle:thin:@some_host:1521:some_service
它工作得很好,但是像下面这样定义会抛出上述错误。
jdbc:oracle:thin:@(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=some_host) (PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=some_service)))
这是我的 beans.xml
,我做错了什么?
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd ">
<bean id="dataSource" class="oracle.ucp.jdbc.PoolDataSourceFactory" factory-method="getPoolDataSource">
<property name="URL" value="jdbc:oracle:thin:@(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=some_host) (PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=some_service)))" />
<!-- property name="URL" value="jdbc:oracle:thin:@some_host:1521:some_service" /> -->
<property name="User" value="some_user" />
<property name="Password" value="some_password" />
<property name="ConnectionFactoryClassName" value="oracle.jdbc.replay.OracleDataSourceImpl" />
<property name="ConnectionPoolName" value="mypool" />
<property name="MinPoolSize" value="1" />
<property name="MaxPoolSize" value="20" />
<property name="InitialPoolSize" value="1" />
</bean>
<!-- Definition for studentJDBCTemplate bean -->
<bean id="studentJDBCTemplate" class="StudentJDBCTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
</beans>
在 XML 属性值中使用 CR and/or LF 是非法的。
所以从
中删除它
<property name="URL" value="...no CR/LF here ..."
连接字符串中:some_service
表示SID(服务名放在/
之后)。因此,如果 jdbc:oracle:thin:@some_host:1521:some_service
正确,则 some_service 是 SID 名称,服务名称可能是其他名称。
看这里http://www.orafaq.com/wiki/JDBC
您可以使用
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT = 1521))
(CONNECT_DATA =
(SID = ORCL)
)
)
我是 Spring JDBC 模板的新手。我正在尝试 运行 一种你好世界程序。
我的问题是如果我将 url 定义为:
jdbc:oracle:thin:@some_host:1521:some_service
它工作得很好,但是像下面这样定义会抛出上述错误。
jdbc:oracle:thin:@(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=some_host) (PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=some_service)))
这是我的 beans.xml
,我做错了什么?
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd ">
<bean id="dataSource" class="oracle.ucp.jdbc.PoolDataSourceFactory" factory-method="getPoolDataSource">
<property name="URL" value="jdbc:oracle:thin:@(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=some_host) (PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=some_service)))" />
<!-- property name="URL" value="jdbc:oracle:thin:@some_host:1521:some_service" /> -->
<property name="User" value="some_user" />
<property name="Password" value="some_password" />
<property name="ConnectionFactoryClassName" value="oracle.jdbc.replay.OracleDataSourceImpl" />
<property name="ConnectionPoolName" value="mypool" />
<property name="MinPoolSize" value="1" />
<property name="MaxPoolSize" value="20" />
<property name="InitialPoolSize" value="1" />
</bean>
<!-- Definition for studentJDBCTemplate bean -->
<bean id="studentJDBCTemplate" class="StudentJDBCTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
</beans>
在 XML 属性值中使用 CR and/or LF 是非法的。
所以从
中删除它
<property name="URL" value="...no CR/LF here ..."
连接字符串中:some_service
表示SID(服务名放在/
之后)。因此,如果 jdbc:oracle:thin:@some_host:1521:some_service
正确,则 some_service 是 SID 名称,服务名称可能是其他名称。
看这里http://www.orafaq.com/wiki/JDBC
您可以使用
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT = 1521))
(CONNECT_DATA =
(SID = ORCL)
)
)