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

我正在尝试使用以下url将oracle与jdbc连接起来

String url = "jdbc:oracle:thin:@: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: :1522:dev;includeSynonyms=true 

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

我正在使用ojdbc14.jar

请帮我

您不能(AFAIK)将此设置为URL的一部分。 根据OracleDriver文档 :

指定数据库URL和属性对象

以下签名采用URL以及指定用户名和密码的属性对象(可能包括其他内容):

 getConnection(String URL, Properties info); 

URL的格式为:

 jdbc:oracle::@ 

除了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:@//:1522/dev" java.util.Properties info = new java.util.Properties(); info.put ("includeSynonyms", "true"); getConnection (url, info); 

未经测试我很害怕,我不确定它是否适用于您的驱动程序版本。 您还可以查看稍后通过OracleConnection或OracleConnectionWrapper进行设置 。

还不完全确定URL表单适用于1.4驱动程序,虽然我认为它确实如此 – 您可能需要使用原始的@:1522:dev表单。 请注意,在easy connect格式中, dev指的是服务名称而不是SID,它们可能不一样; 如果这有问题,请检查lsnrctl status显示的内容。

您是否使用来自url变量的URL而不将更改为IP地址? 如果是这样,那么只需将其更改为Oracle服务器的地址即可。

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

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

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

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