package com.cn.zjjt.util;import java.sql.Connection;
import java.sql.DriverManager;public final class JdbcUtil {

public static final String DB_DRIVER="org.gjt.mm.mysql.Driver";
public static final String DB_URL="jdbc:mysql://localhost/zjjt";
public static final String DB_USERNAME="root";
public static final String DB_PASSWORD="root";
Connection conn; 

private JdbcUtil(){

}

static  { 
try {
Class.forName(DB_DRIVER);
} catch (Exception e) {
e.printStackTrace();
System.out.println(e.toString());
}
}

public  static Connection getConnection()  throws Exception //返回Connection
{
return DriverManager.getConnection(DB_URL,DB_USERNAME,DB_PASSWORD);
}

public void dbClose()  //关闭数据库连接
{
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
System.out.println(e.toString());
}
}
}
各位帮忙分析分析我JDBC模板、这样写可以吗???

解决方案 »

  1.   

    有问题,你在别的地方调用的时候是用的另外一个 conn,在关闭的时候要把那个 conn 传过来的,另外你的 conn 都没有用到,肯定是个空指针异常.可以看一下别人怎么写的.
      

  2.   

    菜鸟啊,connection要交给ThreadLocale管理
      

  3.   

    public static void dbClose(conn)  //关闭数据库连接
        {
            
                 try {
      if(conn != null){  // 当Connection对象的实例conn不为空时
                    conn.close();
       }
                 } catch (Exception e) {
                    e.printStackTrace();
                     System.out.println(e.toString());
                }
        }你不让实例化,让我如何关闭数据库连接呢?
    public  static Connection getConnection()  throws Exception //返回Connection
        {    
              Connection conn = null; //如果一起使用同一个conn的话 如果你忘关闭清除 下次就不保证是新的conn了。
              conn = DriverManager.getConnection(DB_URL,DB_USERNAME,DB_PASSWORD);
              return  conn;
        }最好别总是抛大异常。是什么异常抛什么。
    对其也是一种‘减负’