在jdbc属性中设置URL时,如:
jdbc:derby://localhost:1527/vehicle;create=true
这是否意味着所有数据都是通过特定端口上的HTTP发送的? (看起来很明显)
答案 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。