package Test02;
import JDBCUtils.JDBCUtils;
import org.junit.Test;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Test01 {
@Test
public void m() throws SQLException {
Connection conn = JDBCUtils.getConnection();
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM emp");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getInt("id") + " " + rs.getString("ename") + " " + rs.getDouble("sal") + " " + rs.getDate("birth"));
}
}
conn.close();//将连接归还给池
}
/*
运用工具类的Druid
两个连接池大同小异,都是将连接参数优化为配置文件,相比之下,druid更加自由
*/
================================分割线====================================
工具类:JDBCUtils
package JDBCUtils;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JDBCUtils {
private static DataSource dataSource = null;
static {
try {
Properties p = new Properties();
p.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
DruidDataSourceFactory druidDataSourceFactory = new DruidDataSourceFactory();
dataSource = druidDataSourceFactory.createDataSource(p);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
public static void close(Connection connection, Statement statement, ResultSet resultSet) {
// 代码的严谨性
try {
if (resultSet != null) {
resultSet.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (statement != null) {
statement.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (connection != null) {
connection.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/*
工具类将属性文件的加载,datasouce的创建,资源的归还,注意由连接池创建的连接,close时是归还,而不是关闭!
*/
|