高手来解释下为何这里只连接一次数据库
package db;
import java.sql.*;
public class Lianj {
	static String url="jdbc:mysql://localhost/picture";
	static String username = "root";
	static String password = "48979879";
	static Connection conn;
	static	Statement stmt;     
	static {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(url, username,password);
			stmt = conn.createStatement();			
		} catch(
ClassNotFoundException e) {
			System.out.println("驱动加载错误");
		}
		catch(
SQLException e) {
			System.out.println("数据库
连接失败");
		}
	}
	public ResultSet read(String sql) {
		ResultSet rs=null;
		try {	
			rs=stmt.executeQuery(sql);
		} catch(SQLException e) {
			rs=null;
			e.printStackTrace();		
		}
		return rs;
	}
	public int input(String sql) {
		int i;
		try {
			i=stmt.executeUpdate(sql);	
		} catch(SQLException e) {
		    i=0;
		    e.printStackTrace();     
		}
	    return i;
	}
}
------解决方案--------------------static语句块在实例化后只执行一次
------解决方案--------------------所有static修饰的
在类里面都是共享的
既然是共享的
有没有必要创建多个共享的东西
------解决方案--------------------static中的Connection在Class初始时就装入了,不论多少个实例,都不会再次执行.
------解决方案--------------------用了static么,静态块呀-0-,我的理解就是该类被加载的时候就会初始化这个静态块,从此以后就重复引用了-0-比较糙的理解
------解决方案--------------------游离于方法之外的代码有两种: 
   一种是静态代码块,就是楼主写的一个样. 
   一咱是实例代码块,就是没有static标答的代码如: 
   public class Persion{ 
    private String name;    
    { 
      System.out.println( "Hello world "); 
     } 
   }   
 两种代码块的加载机制在jvm是不同的 
 静态代码码,只在类加载器第一次加载的时候执行.当然如果一个jvm中多个不同的类装载器,用不同的类装载器加载时,静态块会远行多次.   
 实例代码块,是在开辟堆空间的时候动行,每生成一个实例(new Persion()),就会远行一次.