您的位置:首页 > 数据库

jdbc链接数据库的三种方式

2011-12-30 19:28 507 查看
数据库连接池

服务器启动时,先创建若干个Connection对象,放到“池”中,然后让它们被重复使用,可以避开连接创建时间长的问题

Tomcat服务器自身内置连接池功能,做下配置即可实现

配置步骤:

1. server.xml配置文件中,定位到工程对应的Context标签

2. 在Context标签体内,添加Resource标签,配置连接池属性

name="jdbc" 资源名字

auth="Container" 资源的管理者,两个选项:Application和Container

type="javax.sql.DataSource" 资源类型,完整的包+类名

maxActive="100" 连接池中数据库连接的最大数目,0表示没有限制

maxIdle="30"

maxWait="10000" 等待获取一个连接对象的最大时间,单位:毫秒,-1表示永久等待

username="root" 连接数据库的用户名

password="root" 连接数据库的密码

driverClassName="com.mysql.jdbc.Driver" JDBC驱动名字

url="jdbc:mysql://localhost:3306/tieba" 连接数据库的URL

3. 代码中获取连接池中的连接对象

...

Context ctx = new InitialContext();

DataSource ds = (DataSource) ctx.lookup("java:/comp/env/jdbc");

Connection conn = ds.getConnection();

...

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Properties;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import javax.sql.DataSource;

public class DBUtil1

{

/**

* 数据库通用方法

* 用于获取一个数据库连接对象

* @return

* @throws ClassNotFoundException

* @throws SQLException

*/

public static Connection getConnection() throws ClassNotFoundException, SQLException

{

// try

// {

// 方法一:通过最原始的写定数据库信息获取连接对象

// Class.forName("com.mysql.jdbc.Driver");

// String url = "jdbc:mysql://localhost:3306/tieba";

// String user = "root";

// String password = "root";

// 方法二:通过从外部配置文件获取数据库连接相关信息

// .properties文件相关操作的封装类

// Properties config = new Properties();

// 从部署后的WEB-INF/classes目录下加载config.properties文件

// ClassLoader loader = Thread.currentThread().getContextClassLoader();

// config.load(loader.getResourceAsStream("config.properties"));

// 从properties文件中获取数据库配置信息

// Class.forName(config.getProperty("dbDriver"));

// String url = config.getProperty("dbUrl");

// String user = config.getProperty("dbUsername");

// String password = config.getProperty("dbPassword");

//

// return DriverManager.getConnection(url, user, password);

// }

// catch (IOException e)

// {

// e.printStackTrace();

// }

// 方法三:通过从连接池中获取连接对象

try

{

Context ctx = new InitialContext();

DataSource ds = (DataSource) ctx.lookup("java:/comp/env/jdbc");

return ds.getConnection();

}

catch (NamingException e)

{

e.printStackTrace();

}

return null;

}

/**

* 用于关闭数据库相关操作的对象

* @param conn

* @param stmt

* @param rs

*/

public static void close(Connection conn, Statement stmt, ResultSet rs)

{

try

{

if(rs != null)

{

rs.close();

}

if(stmt != null)

{

stmt.close();

}

if(conn != null)

{

conn.close();

}

}

catch (SQLException e)

{

e.printStackTrace();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: