JDBC使用url进行连接

时间:2010-01-10 23:23:38

标签: java jdbc

在jdbc属性中设置URL时,如:

jdbc:derby://localhost:1527/vehicle;create=true

这是否意味着所有数据都是通过特定端口上的HTTP发送的? (看起来很明显)

3 个答案:

答案 0 :(得分:5)

它与HTTP无关,没有。使用的协议特定于数据库和JDBC驱动程序,JDBC URL格式也是如此。所有JDBC URL的唯一共同点是jdbc:前缀。

在这种特殊情况下,我会说你有一个Apache Derby JDBC URL,连接到localhost端口1527上的服务器,数据库(或者用户)名称“vehicle”,必要时创建它。

另一个例子是Oracle JDBC URL格式:

jdbc:oracle:<drivertype>:<username/password>@<database>

与Derby非常不同,但指定相同类型的信息。

答案 1 :(得分:1)

引用6 Database connections的章节specification for the JDBC API(这是一个旧版本,但我发现它比关于JDBC URL的更新版本更清晰):

  

6.3个网址

     

6.3.1 JDBC数据库命名的目标

     

我们需要提供一种命名方式   数据库使应用程序编写者   可以指定他们希望的数据库   连接到。

     

我们希望这个JDBC命名   机制有以下几点   属性:

     
      
  • 不同的驱动程序可以使用不同的方案来命名数据库。对于   例如,JDBC-ODBC桥驱动程序可以   支持简单的ODBC样式数据源   名称,而网络协议   司机可能需要知道额外的   信息,以便它可以发现哪些   要连接的主机名和端口。
  •   
  • 如果用户下载了想要与给定数据库通信的小程序,那么   我们希望能够打开一个   无需数据库连接   用户做任何系统   行政家务。因此   例如,我们希望避免要求   人类管理的类似物   客户端上的ODBC数据源表   机器。这意味着它应该   可以编码任何必要的   JDBC中的连接信息   名称
  •   
  • 我们希望在JDBC名称中允许一个间接级别,以便这样做   初始名称可以通过解决   一些网络命名系统才能   找到数据库。这将允许   系统管理员要避免   将特定主机指定为   JDBC名称。但是,从那以后   是一些不同的网络名称   服务(如NIS,DCE等)我们   不希望强制要求   使用特定的网络名称服务器。
  •   
     

6.3.2 URL语法

     

幸运的是万维网有   已经标准化命名   支持所有这些的系统   属性。这是制服   资源定位器(URL)机制。所以   我们建议使用JDBC的URL   命名,只是推荐一些   用于构造JDBC URL的约定。

     

我们建议使用JDBC URL   结构如下:

jdbc:<subprotocol>:<subname>
     

其中子协议命名一个特定的   一种数据库连接   一个人可能支持的机制   或更多司机。内容和   子名的语法将取决于   子协议。

     

如果您要指定网络   地址作为您的子名称的一部分,我们   建议遵循标准URL   命名惯例   “// hostname:port / subsubname”表示   子名。子名可以有   任意内部语法。

总结:

  • JDBC URL和HTTP URL之间唯一的共同点是两者都使用相同的标准化命名系统:Uniform Resource Locator(URL)机制(这只是对JDBC 的推荐1 )。

  • JDBC URL特定于JDBC驱动程序(同一数据库的不同驱动程序将使用不同的方案)。有关详细信息,请参阅JDBC驱动程序的文档(例如,使用Derby Network Server时,请查看Derby network client URL Format)。

  • 不,JDBC客户端与数据库服务器通信所使用的协议不是HTTP(它是一种特定于数据库的协议)。


1 实际上,JDBC URL可能不是真正的URI,如本全新JSR 221: JDBCTM 4.0 API Specification的注释中所述:

  

注意 - 完全遵循JDBC中定义的JDBC语法不需要JDBC URL   RFC 3986,统一资源标识符(URI):通用语法。

答案 2 :(得分:0)

简短的回答是否定的。要了解为什么需要了解URL的语法。 URI的基本语法是

<url> ::= <scheme>:<scheme-specific-part>

其中是一个标识符,说明如何解释冒号后的内容。大多数网址都使用'http'方案; e.g。

http://www.example.com/somepage.html

虽然网络浏览器也了解其他方案,如'ftp','mailto'等。

但正如您所看到的,JDBC URL使用'jdbc'方案;例如

jdbc:derby://localhost:1527/vehicle;create=true
在某些情况下(例如,“http”和“ftp”),该方案具有可用于访问内容的对应应用协议(例如,分别为HTTP或FTP)。 (这假设URL实际上解析为可获取的内容)。

在包括'jdbc'方案的其他情况下,URL不表示内容,甚至不一定指定协议。在JDBC情况下,URL实际上指定了访问数据库的端点位置(以及其他详细信息)。第二次冒号之后的东西是JDBC驱动程序/ RDBMS特有的,无论是语法还是意义。但是,涉及HTTP的可能性很小,或者Web浏览器不知道如何处理JDBC URL。