数据库连接工具类----JdbcUtil的写法集合
程序员文章站
2024-03-23 08:00:57
...
连接数据库需要的包jar
1.初级者:完成连接效果即可。
public class Util {
/**
* 得到连接
* @return 连接对象
* @throws Exception
*/
public static Connection getcon() throws Exception{
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/library";
Connection con=DriverManager.getConnection(url,"root","123456");
return con;
}
/**
* 释放资源
* @param rs 结果集对象
* @param ps 语句对象
* @param con 连接对象
* @throws Exception
*/
public static void close(ResultSet rs,PreparedStatement ps,Connection con) throws Exception{
rs.close();
ps.close();
con.close();
}
}
2.中级者:外部文件更改连接数据库的数据源。
数据源写在properties文件里面(一般写在src文件夹下面)
在这里插入代码片public class DBUtils {
/**
* 0. 设置数据源的四要素:驱动、连接、用户名、密码
*/
private static String DRIVER;
private static String URL;
private static String UNAME;
private static String UPWD;
/**
* 1. 加载数据库驱动
* 高内聚,低耦合
*
*/
static {
try {
//1.加载外部的db.properties文件
InputStream is = DBUtils.class.getResourceAsStream("/db.properties");
//2.实例化一个properties对象
Properties prop = new Properties();
//3.properties对象加载is流
prop.load(is);
//4.通过properties对象,获得db.properties文件中的值
DRIVER = prop.getProperty("driver"); //从properties对象中找名叫driver的参数
URL = prop.getProperty("url");
UNAME = prop.getProperty("name");
UPWD = prop.getProperty("pass");
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 2. 获得数据库连接
*/
public static Connection getConnection() {
Connection conn = null;
try {
conn = DriverManager.getConnection(URL, UNAME, UPWD);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* 3. 关闭数据库连接,释放资源
*/
public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {
try {
if (conn != null) {
conn.close();
}
if (ps != null) {
ps.close();
}
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void close(Connection conn, PreparedStatement ps) {
close(conn, ps, null);
}
public static void close(Connection conn) {
close(conn, null, null);
}
}
3.高级者:使用数据库连接池。(德鲁伊连接池为例)
德鲁伊的properties文件
public class DruidUtils {
// 1.声明druid数据源工厂对象
private static DataSource dataSource;
/**
* 1. 加载数据库驱动
*/
static {
try {
//2.加载druid文件
InputStream is = DruidUtils.class.getResourceAsStream("/druid.properties");
Properties prop = new Properties();
prop.load(is);
//3.调用德鲁伊数据源工厂函数创建数据源
dataSource = DruidDataSourceFactory.createDataSource(prop);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 2. 获得数据库连接
*/
public static Connection getConnection() {
Connection conn = null;
try {
conn = dataSource.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
/**
* 3. 关闭数据库连接,释放资源
*/
public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {
try {
if (conn != null) {
conn.close();
}
if (ps != null) {
ps.close();
}
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void close(Connection conn, PreparedStatement ps) {
close(conn, ps, null);
}
public static void close(Connection conn) {
close(conn, null, null);
}
}
4.大神级:使用Spring Jdbc框架。
在3的基础是加一个返回数据源的方法即可!!!
//返回数据源
public static DataSource getDateSource() {
return dataSource;
}
完整代码如下:
public class JDBCTemplateUtils {
// 声明druid数据源工厂对象
private static DataSource dataSource;
/**
* 1. 加载数据库驱动
*/
static {
try {
InputStream is = JDBCTemplateUtils.class.getResourceAsStream("/druid.properties");
Properties prop = new Properties();
prop.load(is);
dataSource = DruidDataSourceFactory.createDataSource(prop);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//2.返回数据源
public static DataSource getDateSource() {
return dataSource;
}
/**
* 2. 获得数据库连接
*/
public static Connection getConnection() {
Connection conn = null;
try {
conn = dataSource.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
/**
* 3. 关闭数据库连接,释放资源
*/
public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {
try {
if (conn != null) {
conn.close();
}
if (ps != null) {
ps.close();
}
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void close(Connection conn, PreparedStatement ps) {
close(conn, ps, null);
}
public static void close(Connection conn) {
close(conn, null, null);
}
}