java 单例模式(singleton)连接 mysql 数据库

java 单例模式(singleton)连接 mysql 数据库
2013年06月19日 09:56:36 wangql521 阅读数 1826
from:http://www.zekkocho.com/java/91-connect-to-database-with-jdbc-singleton

——————————————————————DBConnect.java—————————————————————

package Jdbc;
import java.sql.*;
public class DBConnect{
//Static instance of connection, only one will ever exist
private static Connection connection = null;
//Returns single instance of connection
public static Connection getConnection(){
//If instance has not been created yet, create it
if(DBConnect.connection == null){
initConnection();
}
return DBConnect.connection;
}
//Gets JDBC connection instance
private static void initConnection(){
try{
Class.forName(“com.mysql.jdbc.Driver”);

        String url = "jdbc:mysql://localhost/test";
        String user = "root";
        String pw = "";
        DBConnect.connection =
                     DriverManager.getConnection(url, user, pw);        
    }
    catch (ClassNotFoundException e){        
        System.out.println(e.getMessage());
        System.exit(0);
    }
    catch (SQLException e){            
        System.out.println(e.getMessage());
        System.exit(0);
    }
    catch (Exception e){        
    }        
}

}

————————————————————————TestDB.java————————————————————————

package Jdbc;

import java.sql.*;
public class TestDB {
public static void main(String args[])
throws Exception{
//Always returns the same instance
Connection connection = DBConnect.getConnection();
ResultSet rows = null;
Statement s = connection.createStatement();
String select = “select * from people;”;
rows = s.executeQuery(select);
while(rows.next()){
System.out.println(rows.getString(“name”));
}
//Get connection again, still same instance
Connection connection2 = DBConnect.getConnection();
if(connection2 == connection){
System.out.println(“Same Instance”);
}
}
}

———————————————————new a test db:test————————————————

create table people(
id int,
name varchar(10)
);

mysql> insert into people values(1, “zhangsan”);
Query OK, 1 row affected (0.04 sec)

mysql> insert into people values(2, “lisi”);
Query OK, 1 row affected (0.02 sec)

mysql> insert into people values(1, “zhangsan”);
Query OK, 1 row affected (0.02 sec)

mysql> select * from people;
±-----±---------+
| id | name |
±-----±---------+
| 1 | zhangsan |
| 2 | lisi |
| 1 | zhangsan |
±-----±---------+
3 rows in set (0.00 sec)

mysql>

———————————————————————run result:——————————————————————

zhangsan
lisi
zhangsan
Same Instance

C:\Users\decli\Desktop\Jdbc>dir
驱动器 C 中的卷没有标签。
卷的序列号是 5EEE-076C

C:\Users\decli\Desktop\Jdbc 的目录

2011/10/31 09:49

.
2011/10/31 09:49
2011/10/30 18:51 505 createDB.txt
2011/10/30 18:37 985 DBConnect.java
2011/10/31 10:34 Jdbc
2011/10/30 18:39 679 TestDB.java
3 个文件 2,169 字节
3 个目录 35,813,437,440 可用字节

C:\Users\decli\Desktop\Jdbc>javac -d . *.java

C:\Users\decli\Desktop\Jdbc>C:\Users\decli\Desktop\java>java -cp .;./Jdbc/mysql-connector-java-5.0.8-bin.jar Jdbc.TestDB
zhangsan
lisi
zhangsan
Same Instance

注:如果是linux,请将 ; 换成 :即可:

gs_decli_0_231:/data/decli/java/testdb # java -cp .:./mysql-connector-java-5.0.8-bin.jar Jdbc.TestDB
zhangsan
lisi
zhangsan
Same Instance
gs_decli_0_231:/data/decli/java/testdb #

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值