jsp连接mysql案例_JSP基于JDBC的数据库连接类实例

本文实例讲述了JSP基于JDBC的数据库连接类。分享给大家供大家参考,具体如下:

/*

*

* TODO To change the template for this generated file go to

* Window - Preferences - Java - Code Style - Code Templates

*/

package com.yanek.test;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.util.Enumeration;

import java.util.Hashtable;

import java.util.PropertyResourceBundle;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import javax.sql.DataSource;

/**

* @author Administrator

*

* TODO To change the template for this generated type comment go to Window -

* Preferences - Java - Code Style - Code Templates

*/

public class Database {

/**

* 数据库访问URL

*/

private static String url;

/**

* 数据库驱动

*/

private static String driver;

/**

* 数据库访问用户名

*/

private static String username;

/**

* 数据库访问口令

*/

private static String password;

/**

* 访问类型

*/

private static String type;

/**

* 数据源名称

*/

private static String datasource;

/**

* 配置文件名称

*/

private final static String fileName = "database";

private static ThreadLocal connection = new ThreadLocal();

static {

config();

}

private static void config() {

// 读取系统配置

PropertyResourceBundle resourceBundle = (PropertyResourceBundle) PropertyResourceBundle

.getBundle(fileName);

// 将系统设置赋值给类变量

Enumeration enu = resourceBundle.getKeys();

while (enu.hasMoreElements()) {

String propertyName = enu.nextElement().toString();

if (propertyName.equals("database.url"))

url = resourceBundle.getString("database.url");

if (propertyName.equals("database.driver"))

driver = resourceBundle.getString("database.driver");

if (propertyName.equals("database.username"))

username = resourceBundle.getString("database.username");

if (propertyName.equals("database.password"))

password = resourceBundle.getString("database.password");

if (propertyName.equals("database.type"))

type = resourceBundle.getString("database.type");

if (propertyName.equals("database.datasource"))

datasource = resourceBundle.getString("database.datasource");

}

}

/**

* 取得数据库连接

*

* @return

* @throws SQLException

*/

public synchronized static java.sql.Connection getConnection()

throws SQLException {

Connection con = (Connection) connection.get();

if (con != null && !con.isClosed()) {

return con;

}

if ("pooled".equalsIgnoreCase(type)) {

// 从JNDI中取得数据源

try {

// 此处对于不同的应用服务器,对env传入不同

Hashtable env = new Hashtable();

// 此处对于不同的应用服务器,对env传入不同

Context ctx = new InitialContext(env); // 从命名系统中获取 DataSource

// 工厂对象

DataSource dataSource = (DataSource) ctx.lookup(datasource);

con = dataSource.getConnection();

connection.set(con);

return con;

} catch (NamingException e) {

e.printStackTrace();

}

} else {

// 直接使用JDBC驱动连接

try {

Class providerClass = Class.forName(driver);

con = DriverManager.getConnection(url, username, password);

con.setAutoCommit(false);

connection.set(con);

return con;

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

return null;

}

public static void commit() {

Connection con = (Connection) connection.get();

try {

con.commit();

} catch (SQLException e) {

e.printStackTrace();

}

}

public static void rollback() {

Connection con = (Connection) connection.get();

try {

con.rollback();

} catch (SQLException e) {

e.printStackTrace();

}

}

public synchronized static void releaseConnection(Connection connection) {

try {

if (connection != null && !connection.isClosed())

connection.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

connection = null;

}

public static void main(String[] args) {

try {

System.out.println("conn:" + Database.getConnection());

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

database.property文件

database.driver=com.mysql.jdbc.Driver

database.url=jdbc:mysql://localhost/test?user=root&password=root&useUnicode=true&characterEncoding=gbk

希望本文所述对大家jsp程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值