数据库连接和数据库连接池连接
数据库直连
方式: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
浙公网安备 33010602011771号