用单例模式实现的java连接MySql数据库
发表于:2007-07-04来源:作者:点击数:
标签:
package com.adrop.util; import java .sql.*; public class DBManager { //用户名 private String user = ; //密码 private String password = ; //主机 private String host = ; //数据库名字 private String database = ; //private DBManager dbm=null; /
package com.adrop.util;
import
java.sql.*;
public class DBManager {
//用户名
private String user = "";
//密码
private String password = "";
//主机
private String host = "";
//数据库名字
private String database = "";
//private DBManager dbm=null;
/*
private String url="jdbc:
mysql://"+host+"/"+"useUnicode=true&characterEncoding=GB2312";
*/
private String url ="";
private Connection con = null;
Statement stmt;
/**
* 私有的构造方法,保证外部不能实例化,只能由DBManager自己能提供自
* 己的实例,并且只能有一个。
* 根据主机、数据库名称、数据库用户名、数据库用户密码取得连接。
* @param host String
* @param database String
* @param user String
* @param password String
*/
private DBManager(String host, String database, String user, String password) {
this.host = host;
this.database = database;
this.user = user;
this.password = password;
//显示中文
this.url = "jdbc:mysql://" + host + "/" + database +
"?useUnicode=true&characterEncoding=GB2312";
try {
Class.forName("org.gjt.mm.mysql.Driver");
}
catch (ClassNotFoundException e) {
System.err.println("class not found:" + e.getMessage());
}
try {
con = DriverManager.getConnection(this.url, this.user, this.password);
//连接类型为ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
}
catch (
SQLException a) {
System.err.println("sql exception:" + a.getMessage());
}
}
/**
* 静态工厂方法,来获得一个DBManager实例
*/
public static DBManager getInstance(String host, String database, String user, String password){
if(dbm==null){
dbm=new DBManager(host,database,user,password);
}
return dbm;
}
/**
* 返回取得的连接
*/
public Connection getCon() {
return con;
}
/**
* 执行一条简单的查询语句
* 返回取得的结果集
*/
public ResultSet executeQuery(String sql) {
ResultSet rs = null;
try {
rs = stmt.executeQuery(sql);
}
catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
/**
* 执行一条简单的更新语句
* 执行成功则返回true
*/
public boolean executeUpdate(String sql) {
boolean v = false;
try {
v = stmt.executeUpdate(sql) > 0 ? true : false;
}
catch (SQLException e) {
e.printStackTrace();
}
finally {
return v;
}
}
}
原文转自:http://www.ltesting.net