用单例模式实现的java连接MySql数据库

类别:Java 点击:0 评论:0 推荐:

 

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://com.8s8s.com/it/it12438.htm