如何使用连接字符串和jdbc url

时间:2013-01-22 09:46:02

标签: java oracle jdbc

我正在尝试使用以下URL连接oracle和jdbc

String url = "jdbc:oracle:thin:@<host>:1522:dev;includeSynonyms=true";

但它引发了以下错误。

java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
<host>:1522:dev;includeSynonyms=true

如果我从网址中删除属性(includeSynonyms = true),我就可以连接。

我正在使用ojdbc14.jar

请帮帮我

3 个答案:

答案 0 :(得分:3)

您不能(AFAIK)将此设置为URL的一部分。根据{{​​3}}:

  

指定数据库网址和属性对象

     

以下签名将URL与属性对象一起使用   指定用户名和密码(可能包括其他内容):

getConnection(String URL, Properties info);
     

网址的格式为:

jdbc:oracle:<drivertype>:@<database>
     

除了URL之外,还要使用标准Java Properties的对象   作为输入的类。例如:

java.util.Properties info = new java.util.Properties();
info.put ("user", "scott");
info.put ("password","tiger");
info.put ("defaultRowPrefetch","15");
getConnection ("jdbc:oracle:oci8:@",info);

列出Oracle JDBC驱动程序支持的连接属性的表包括includeSynonyms,因此您应该可以这样做:

String url = "jdbc:oracle:thin:@//<HOST>:1522/dev"
java.util.Properties info = new java.util.Properties();
info.put ("includeSynonyms", "true");
getConnection (url, info);

未经测试我很害怕,我不确定它是否适用于您的驱动程序版本。你也可以看一下稍后通过设置它 OracleDriver documentaionOracleConnection

也不完全确定URL表单适用于1.4驱动程序,但我认为确实如此 - 您可能需要使用原始的@<host>:1522:dev表单。请注意,在OracleConnectionWrapper格式中,dev指的是服务名称而不是SID,它们可能不相同;检查lsnrctl status显示的内容是否有问题。

答案 1 :(得分:0)

您是否使用url变量中的网址而不将<host>更改为IP地址?如果是这样,那么只需将其更改为Oracle服务器的地址。

您还应该阅读有关通过JDBC连接tp Oracle的信息:http://docs.oracle.com/cd/B10501_01/java.920/a96654/basic.htm甚至还有关于设置连接属性的信息,包括includeSynonyms

答案 2 :(得分:-1)

你需要在@ symblol之后添加一个TNS名称,即如果oracle db tns名称是dev,它将转换为:

String url = "jdbc:oracle:thin:@//<HOST_IP>:1522:dev;includeSynonyms=true";

使用正斜杠而不是完整冒号