java mysql 连接方式_java连接数据库的几种方式(转)

JDBC硬编码连接

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.SQLException;

publicclassJDBCConn{

publicstaticfinalStringDRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver";

publicstaticfinalStringURL="jdbc:sqlserver://localhost:1433;DatabaseName=books";

publicstaticfinalStringUSER="sa";

publicstaticfinalStringPWD="ok";

privateConnectionconn=null;

publicConnectiongetConn(){

try{

Class.forName(DRIVER);

conn=DriverManager.getConnection(URL,USER,PWD);

}catch(ClassNotFoundExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

returnconn;

}

}

读取propperties配置文件连接

1.创建读取配置文件的类

importjava.io.IOException;

importjava.io.InputStream;

importjava.util.Properties;

/**

*单列类:获取属性文件

*@authormacau

*/

publicclassEnvextendsProperties{

/**

*构造方法

*/

privateEnv(){

InputStreamis=(InputStream)this.getClass().getResourceAsStream(

"/db.properties");//创建输出流

try{

load(is);//读取流

is.close();

}catch(IOExceptione){

e.printStackTrace();

}

}

privatestaticEnvinstance;//当前类实例

/**

*获得当前实例

*@return

*/

publicstaticEnvgetInstance(){

if(instance==null){

makeInstance();

}

returninstance;

}

/**

*创建当前类实例

*/

privatestaticsynchronizedvoidmakeInstance(){

if(instance==null){

instance=newEnv();

}

}

}

2.通过读取配置文件的类获取数据库连接参数

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.SQLException;

publicclassPropConn{

privateStringdriver=Env.getInstance().getProperty("driver");

privateStringurl=Env.getInstance().getProperty("url");

privateStringuser=Env.getInstance().getProperty("user");

privateStringpwd=Env.getInstance().getProperty("pwd");

privateConnectionconn=null;

publicConnectiongetConn(){

try{

Class.forName(driver);

conn=DriverManager.getConnection(url,user,pwd);

}catch(ClassNotFoundExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

returnconn;

}

}

配置JNDI获取

使用JNDI,数据库连接,数据池和连接的管理都在J2EE容器来配置和管理,程序员只需要对这些配置和管理进行引用即可。

在应用服务器连接池里进行数据库连接以及对应的jndi配置,配置好的JNDI的名称为jdbc/myds

接下来在spring利用JNDI配置数据源

id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">

name="jndiName">jdbc/myapp

</bean>

1.在Tomcat安装目录的conf目录下的context.xml文件的标记中添加配置

maxActive="1000"maxIdel="30"maxWait="10000"

username="sa"password="ok"

driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"

url="jdbc:sqlserver://localhost:1433;DatabaseName=books"/>

2.编码获取数据库连接

importjava.sql.Connection;

importjava.sql.SQLException;

importjavax.naming.Context;

importjavax.naming.InitialContext;

importjavax.naming.NamingException;

importjavax.sql.DataSource;

publicclassJNDIConn{

privateConnectionconn=null;

publicConnectiongetConn(){

try{

Contextcontext=newInitialContext();

DataSourcesource=(DataSource)context

.lookup("java:comp/env/jdbc/books");

conn=source.getConnection();

}catch(NamingExceptione){

e.printStackTrace();

}catch(SQLExceptione){

e.printStackTrace();

}

returnconn;

}

}

连接池

1. 目前开源的连接池有

Proxool DBCP DBPool

1)dbcp

dbcp可能是使用最多的开源连接池,原因大概是因为配置方便,而且很多开源和tomcat应用例子都是使用的这个连接池吧。

这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。这个连接池的配置参见附件压缩包中的:dbcp.xml

使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性还是可以,不过速度稍慢,在大并发量的压力下稳定性

有所下降,此外不提供连接池监控

2)proxool

proxool这个连接池可能用到的人比较少,但也有一定知名度,这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。

这个连接池的配置参见附件压缩包中的:proxool.xml。

使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性有一定问题,有一个需要长时间跑批的任务场景任务,同样的代码

在另外2个开源连接池中成功结束,但在proxool中出现异常退出。

但是proxool有一个优势--连接池监控,这是个很诱人的东西,大概的配置方式就是在web.xml中添加如下定义:

<servlet><servlet-name>admin</servlet-name><servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class></servlet><servlet-mapping><servlet-name>admin</servlet-name><url-pattern>/admin</url-pattern></servlet-mapping>

并在应用启动后访问:http://localhost:8080/myapp/admin这个url即可监控

不过proxool本身的包在监测使用中会有编码问题,附件中有一个

解决此问题的包,参见附件压缩包中的:proxool-0.9.0RC3.jar。另外需要jdk1.5以上的环境。

2.

商业连接池

weblogic的连接池

websphere的连接池

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2012-01-10 17:43

浏览 971

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值