jdbc链接数据库的三种方式

来源:互联网 发布:淘宝客佣金被冻结 编辑:程序博客网 时间:2024/06/05 00:10
数据库连接池
服务器启动时,先创建若干个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();
}
}
}