封装JDBC工具类,即对JDBC进行简单封装后使用,比上一篇的方法略进阶
导入相应jar包,具体过程参见 连接mysql数据库的基本方法和框架(一)
可选择使用硬编码或软编码编写JDBC工具类,如下
package com.fan.jdbcutil.util;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class JDBCUtil {
//硬编码1
// private static String url = "jdbc:mysql://localhost:3306/school";
// private static String user = "root";
// private static String password = "123456";
// private static String driver = "com.mysql.cj.jdbc.Driver";
//软编码1
private static String url;
private static String user;
private static String password;
private static String driver;
static {
try {
Properties pro = null;
pro = new Properties();
//硬编码2
// ClassLoader classLoader = JDBCUtil.class.getClassLoader();
// URL resource = classLoader.getResource("sources/mysql.properties");
// String path = resource.getPath();
// pro.load(new FileReader(path));
//软编码2
InputStream in = null;
//绝对路径
// in = new FileInputStream("D:/My WorkSpace/JDBCUtilTest/sources/mysql.properties");
//相对路径以工程文件根目录为基准
in = new FileInputStream("sources/mysql.properties");
pro.load(in);
System.out.println(pro.getProperty("jdbc.url"));
url = pro.getProperty("jdbc.url");
user = pro.getProperty("jdbc.username");
password = pro.getProperty("jdbc.password");
driver = pro.getProperty("jdbc.driver");
} catch (IOException e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public static void close(Connection conn, PreparedStatement pstmt, ResultSet rs) {
if(conn != null)
{
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(pstmt != null)
{
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(rs != null)
{
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
注释掉的代码即为硬编码,如使用软编码,还需编写对应数据库文档mysql.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.username=root
jdbc.password=123456
jdbc.url=jdbc:mysql://localhost:3306/school
简单应用JDBCUtil
package com.fan.jdbcutil.test;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.fan.jdbcutil.util.JDBCUtil;
public class excute {
public static void main(String[] args) {
try {
Connection conn = JDBCUtil.getConnection();
String sql = "SELECT * FROM USER";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()) {
int id = rs.getInt("uid");
System.out.println(id);
}
} catch (SQLException e) {
e.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
}
}
}
项目结构如下
其中read.java为读取mysql.properties的预先测试类,请忽略
对应数据库文件详见 连接mysql数据库的基本方法和框架(一)