本文实例讲述了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
database.url=jdbc:mysql://localhost/test?user=root&password=root&useunicode=true&characterencoding=gbk
希望本文所述对大家jsp程序设计有所帮助。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!