2007-11-20 09:37:06| 分类: 数据库技术 |字号 订阅 MySql url参数来源于以下地址:
http://hi.baidu.com/jt88/blog/item/676ab1a13118608947106412.html mysql JDBC Driver
常用的有两个,一个是gjt.Giant Java Tree)组织提供的mysql驱动,其JDBC Driver名称(JAVA类名)为:org.gjt.mm.mysql.Driver 详情请参见网站:http://www.gjt.org/ 或在本网站下载mysql JDBC Driver(mm.jar)
另一个是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 当useUnicode设置为true时,指定字符编码。比如可设置为gb2312或gbk
缺省值 false false false false
最低版本要求 所有版本 所有版本 1.1g
characterEncoding autoReconnect autoReconnectForPools
1.1g
当数据库连接异常中断时,是否自动重新连接? 1.1
是否使用针对数据库连接池的重连策略 3.1.3
failOverReadOnly
maxReconnects
initialTimeout
connectTimeout
socketTimeout
自动重连成功后,连接是否设置为只读? autoReconnect设置为true时,重试连接的次数 autoReconnect设置为true时,两次重连之间的时间间隔,单位:秒
和数据库服务器建立socket连接时的超时,单位:毫秒。 0表示永不超时,适用于JDK 1.4及更高版本 socket操作(读写)超时,单位:毫秒。 0表示永不超时
tr
3.0.12 ue 3 2 0 0
1.1 1.1 3.0.1 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
&autoReconnect=true&failOverReadOnly=false
其他参数请参见mysql jdbc官方文档: MySQL Connector/J Documentation
对于乱码问题,现解决如下(本人配置过程记录): 1、建数据库时,选择数据库的字符集为GBK; 2、数据库建表时,在建表语句后面加上字符集,如: CREATE TABLE `t_channel` (
`channelid` int(11) NOT NULL auto_increment, `channelname` varchar(100) default NULL, `channel` varchar(20) NOT NULL, `status` smallint(6) NOT NULL default '1', `creator` int(11) default NULL,
`createtime` datetime default NULL, PRIMARY KEY (`channelid`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk; 3、连接数据库的JDBC URL中指定字符集
4、JSP页面中设置字符集为GBK
5、在应用中加载过滤器,对字符集进行转换 在web.xml中增加:
SetCharacterEncodingFilter类的代码如下: package common; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; /**
* Example filter that sets the character encoding to be used in parsing the * incoming request */
public class SetCharacterEncodingFilter implements Filter { /**
* Take this filter out of service. */
public void destroy() { } /**
* Select and set (if specified) the character encoding to be used to * interpret request parameters for this request. */
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding(\"GBK\"); // 传递控制到下一个过滤器 chain.doFilter(request, response); }
public void init(FilterConfig filterConfig) throws ServletException { } }
使用以上方法处理后,保存和读取的中文将不会出现乱码。
因篇幅问题不能全部显示,请点此查看更多更全内容