package com;import java.sql.*;public class Demo{
private Connection conn;
static{
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}
catch (SQLException ex) {
ex.printStackTrace();
}
}
public Connection getConnection(){
try {
if(conn == null || conn.isClosed()){
conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=pubs","sa","");
}
}
catch (SQLException ex) {
ex.printStackTrace();
}
finally {
return conn;
}
}
public void closeConnection(Connection conn){
if(conn != null && !conn.isClosed()){
try {
conn.close();
}
catch (SQLException ex) {
ex.printStackTrace();
}
}
}
}上面这段是我自己经常用的,但是今天别人说这种写法不好,不要放在静态块里面,浪费资源,但是我想着只加载一次,总比用获得一次连接就加载一次要好吧???下面是他的写法,到底哪种比效好呢?前辈们帮我看看。。谢谢咯。。package com;import java.sql.*;public class Demo{
public Connection getConnection(){
Connection conn = null;
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//每次获得连接不是都要加载一次类吗?这样不耗资源?
conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=pubs","sa","");
}
catch (Exception ex) {
ex.printStackTrace();
}
finally {
return conn;
}
}
public void closeConnection(Connection conn){
if(conn != null){
try {
conn.close();
}
catch (SQLException ex) {
ex.printStackTrace();
}
}
}
}
private Connection conn;
static{
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}
catch (SQLException ex) {
ex.printStackTrace();
}
}
public Connection getConnection(){
try {
if(conn == null || conn.isClosed()){
conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=pubs","sa","");
}
}
catch (SQLException ex) {
ex.printStackTrace();
}
finally {
return conn;
}
}
public void closeConnection(Connection conn){
if(conn != null && !conn.isClosed()){
try {
conn.close();
}
catch (SQLException ex) {
ex.printStackTrace();
}
}
}
}上面这段是我自己经常用的,但是今天别人说这种写法不好,不要放在静态块里面,浪费资源,但是我想着只加载一次,总比用获得一次连接就加载一次要好吧???下面是他的写法,到底哪种比效好呢?前辈们帮我看看。。谢谢咯。。package com;import java.sql.*;public class Demo{
public Connection getConnection(){
Connection conn = null;
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//每次获得连接不是都要加载一次类吗?这样不耗资源?
conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=pubs","sa","");
}
catch (Exception ex) {
ex.printStackTrace();
}
finally {
return conn;
}
}
public void closeConnection(Connection conn){
if(conn != null){
try {
conn.close();
}
catch (SQLException ex) {
ex.printStackTrace();
}
}
}
}
楼主【coolhty】截止到2008-07-24 20:08:38的历史汇总数据(不包括此帖):
发帖的总数量:72 发帖的总分数:1735 每贴平均分数:24
回帖的总数量:147 得分贴总数量:37 回帖的得分率:25%
结贴的总数量:72 结贴的总分数:1735
无满意结贴数:2 无满意结贴分:40
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:2.78 % 无满意结分率:2.31 %
敬礼!
java.sql.DriverManager.registerDriver(new Driver());
而且这句代码是在Driver类的static block里面,和你方案1的Class.forName()位置一样,所以只会执行一次我觉得这两种方案还是1好点,不过差别不大