数据库连接和数据库连接池连接

数据库直连

方式:DriverManager

需要引入的jar包:我用的版本是mysql-connecton-java-5.1.7-bin.jar

//1.加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
//2. 获得数据库连接			
con = (Connection) DriverManager.getConnection(DB_URL,USER,PASS);
//3.操作数据库,实现增删改查			
stmt = (Statement) con.createStatement();
String sql;
sql = "select name,password from a"; 
ResultSet rs = stmt.executeQuery(sql);
	
while(rs.next()){
     String name = rs.getString("name");
        String password = rs.getString("password");
	//System.out.println("name:"+name);			
        //System.out.println("password:"+password);
}
rs.close();
stmt.close();
con.close();        

数据库连接池

方式一:DBCP

方式二:C3P0

DBCP:

配置文件context.xml

 

<Context>
	<Resource name ="jdbc/test" 
        auth = "Container" 
        type = "javax.sql.DataSource"
	maxTotal = "100" 
        maxIdle = "30" 
        maxWaitMillis="10000" 
        username="root"
	password="******" 
        driverClassName="com.mysql.jdbc.Driver" 
	url="jdbc:mysql://localhost:3306/test" />
</Context>    

 

与数据库直连相比,连接池是从连接池中获取一个连接,然后进行增删改查操作。

//lookup()中如果是非本地数据库直接/jdbc/test
//如果是本地数据库需要java:comp/env/jdbc/test
//jdbc/test应该与配置文件中的name一致
DataSource ds = (DataSource) context.lookup("java:comp/env/jdbc/test"); 

Connection conn = ds.getConnection();
Statement stmt = (Statement) conn.createStatement();
			
String sql;
sql = "select name,password from a";
ResultSet rs = stmt.executeQuery(sql);
		
while(rs.next()){
		String name = rs.getString("name");
		String password = rs.getString("password");
		//System.out.println("name:"+name);
		//System.out.println("password:"+password);
}
rs.close();
stmt.close();
conn.close();

  

C3P0:

参考了同学的知乎,挺受益的

详见:https://zhuanlan.zhihu.com/p/28831891

  

 

posted on 2018-01-17 14:16  在路上-j  阅读(349)  评论(0编辑  收藏  举报