数据库连接类

数据库连接类

 

/*
 * Created on 2005-11-6
 *
 * 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

时间: 2024-10-04 10:41:13

数据库连接类的相关文章

mysql-Java Web连接MySql数据库,修改数据库连接类中的用户名和密码没有效果?

问题描述 Java Web连接MySql数据库,修改数据库连接类中的用户名和密码没有效果? 现在在做一个项目,其中编写了数据库连接及操作的类. 1.ConnDB类. package com.wgh.tools; import java.io.InputStream; //导入java.io.InputStream类 import java.sql.*; //导入java.sql包中的所有类 import java.util.Properties; //导入java.util.Properties

asp.net数据库连接类

asp教程.net数据库教程连接类 <%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %> <html xmlns="http://www.111cn.net/1999/xhtml"> <head> <meta http-equiv="Content-Type" cont

PHP实现的sqlite数据库连接类_php技巧

本文实例讲述了PHP实现的sqlite数据库连接类.分享给大家供大家参考.具体实现方法如下: 该sqlite数据库连接类就是利用了php与sqlite进行连接操作,代码如下: 复制代码 代码如下: */ lass db_class { var $conn=null; var $querynum = 0; /**  * 数据库连接,返回数据库连接标识符  *   * @param string $ 数据库服务器主机  * @param string $ 数据库服务器帐号  * @param str

php的mssql数据库连接类实例_php技巧

本文实例讲述了php的mssql数据库连接类实例代码,分享给大家供大家参考. 具体实现代码如下: 复制代码 代码如下: class DB_Sql {   var $Host     = "";   var $Database = "";   var $User     = "";   var $Password = "";   var $Link_ID  = 0;   var $Query_ID = 0;   var $Rec

[原创]php数据库连接类

[原创]php数据库连接类 <?php  class Db{    public $conn;   public $root='localhost';   public $user='root';   public $pass='root';   public $db='111cn.net';   public $charset='gb2312';   public $links='c';      function __construct() {     $this->connect();

三种asp.net数据库连接类

连接sqlserver数据库  代码如下 复制代码 using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.We

一款实用的php mysql数据库连接类

 本款数据库连接类,他会自动加载sql防注入功能,过滤一些敏感的sql查询关键词,同时还可以增加判断字段 show table status的性质与show table类 获取数据库所有表名等.*/ @ini_set('mysql.trace_mode','off'); class mysql {  public $dblink;  public $pconnect;  private $search = array('/union(s*(/*.**/)?s*)+select/i', '/loa

mysql 数据库连接类

mysql教程 数据库教程连接类  /*  提供一款简单实用的mysql php教程数据库连接代码哦,如果你正是php 入门者可以进来看看这款数据库代码是不是你要找的吧.  */ class mysql{     private $host;     private $user;     private $pass;     private $dbname;     function __construct($host,$user,$pass,$dbname){         $this->h

一个常用php mysql数据库连接类

 代码如下 复制代码 <?php  class ConnectionMySQL{      //主机      private $host="localhost";      //数据库的username      private $name="root";      //数据库的password      private $pass="";      //数据库名称      private $table="phptest&qu