JDBC URL的概念

1.JDBC URL的概念 

JDBC URL提供了一种标识数据库的方法,可以使相应的驱动程序能识别该数据库并与之建立连接。实际上,驱动程序编程员将决定用什么JDBC URL来标识特定的驱动程序。用户不必关心如何来形成JDBC URL,它们只须使用与所用的驱动程序一起提供的URL即可。JDBC的作用是提供某些约定,驱动程序程序员在构造它们的JDBC URL时应该遵循这些约定。 

(1)由于JDBC URL要与各种不同的驱动程序一起用,因此,这些约定应非常灵活。首先,它们应允许不同的驱动程序使用不同的方案来命名数据库。例如,odbc子协议允许(但不是要求)URL含有属性值。 

(2)JDBC URL应允许驱动程序程序员将一切所需的信息编入其中。这样就可以让要与数据库对话的applet打开数据库连接,而无需要求用户去做任何系统管理工作。 

(3)JDBC URL应允许某种程度的间接性。也就是说,JDBC URL可指向逻辑主机或数据库名,而这种逻辑主机或数据库名将由网络命名系统动态地转换为实际名称。这可以使系统不必将特定主机声明为JDBC名称的一部分。网络命名服务(例如:DNS,NIS和DCE)有多种,而对于使用哪种命名服务并无限制。 

2.JDBC URL格式 

JDBC URL的标准语法如下所示。它由三个部分组成,各部分间用冒号分隔。 

jdbc:<子协议>:<子名称> 

JDBC URL的三个部分可以分解如下: 

(1)jdbc——协议。JDBC URL中的协议总是jdbc. 

(2)<子协议>——驱动程序名或数据库连接机制(这种机制可由一个或多个驱动程序支持)的名称。子协议名的典型示例是:ODBC,该名称是为用于指定ODBC风格的数据资源名称的URL专门保留。例如,为了通过JDBC-ODBC桥来访问某个数据库,可以用如下的所示的UR: 

jdbc:odbc:mydatabase 

(3)<子名称>——一种标识数据库的方法。子名称可以依不同的子协议而变化,用子名称的目的是为了定位数据库提供足够的信息。如果数据库是通过Internet来访问的,在JDBC URL中应将网络地址作为子名称的一部分包括进去,且必须遵循如下所示的标准URL命名约定: 

//主机名:端口/子协议 

=========================================== 

    MySQL JDBC Driver 
    
    常用的有两个,一个是gjt(Giant Java Tree)组织提供的mysql驱动,其JDBC Driver名称(JAVA类名)为:org.gjt.mm.mysql.Driver 
    详情请参见网站:http://www.gjt.org/ 
    
    另一个是mysql官方提供的JDBC Driver,其JAVA类名为:com.mysql.jdbc.Driver 
    驱动下载网址:http://dev.mysql.com/downloads/,进入其中的MySQL Connector/J区域下载。 

    mysql JDBC URL格式如下: 
    
    jdbc:mysql://[host:port],[host:port].../[database][?参数名1][=参数值1][&参数名2][=参数值2]... 


    现只列举几个重要的参数,如下表所示: 
    
         
    参数名称 参数说明 缺省值 最低版本要求   

    user 数据库用户名(用于连接数据库)  所有版本  

    password 用户密码(用于连接数据库)  所有版本  

    useUnicode 是否使用Unicode字符集,如果参数characterEncoding设置为gb2312或gbk,本参数值必须设置为true false  1.1g  

    characterEncoding 当useUnicode设置为true时,指定字符编码。比如可设置为gb2312或gbk false 1.1g   

    autoReconnect 当数据库连接异常中断时,是否自动重新连接? false 1.1   

    autoReconnectForPools 是否使用针对数据库连接池的重连策略 false 3.1.3   

    failOverReadOnly 自动重连成功后,连接是否设置为只读? true 3.0.12   

    maxReconnects autoReconnect设置为true时,重试连接的次数 3 1.1   

    initialTimeout autoReconnect设置为true时,两次重连之间的时间间隔,单位:秒 2 1.1   

    connectTimeout 和数据库服务器建立socket连接时的超时,单位:毫秒。 0表示永不超时,适用于JDK 1.4及更高版本 0 3.0.1   

    socketTimeout socket操作(读写)超时,单位:毫秒。 0表示永不超时 0 3.0.1 
     

    
    对应中文环境,通常mysql连接URL可以设置为: 
    jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=gbk&autoReconnect=true&failOverReadOnly=false
    
    在使用数据库连接池的情况下,最好设置如下两个参数: 
    autoReconnect=true&failOverReadOnly=false 
    
    需要注意的是,在xml配置文件中,url中的&符号需要转义成&。比如在tomcat的server.xml中配置数据库连接池时,mysql jdbc url样例如下: 
    jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=gbk 
    &amp;autoReconnect=true&;amp;failOverReadOnly=false
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值