1、 jdbc.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/shopping
user=root
password=123456
2、JDBCUtil.java
public class JDBCUtil {
private Connection conn;
private PreparedStatement ps;
private ResultSet rs;
/* 打开连接 */
public Connection getConnection() {
try {
//注册驱动
Class.forName(JDBCProperties.getDriver());
//打开连接
conn = DriverManager.getConnection(JDBCProperties.getUrl(),JDBCProperties.getUser(),JDBCProperties.getPassword());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
/* 创建preparedStatement */
public PreparedStatement createPreparedStatement(String sql, Object...parameters) { // sql语句中的?是一群(数组) 数组在java当中是可变形参Object...parameters
getConnection();
try {
ps = conn.prepareStatement(sql);
if(parameters != null) {
for(int i = 0; i < parameters.length; i++) {
System.out.println(i);
ps.setObject(i+1, parameters[i]);
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ps;
}
/* 执行非查询Sql语句 */
public int executeUpdate(String sql, Object...parameters) {
int num = 0;
createPreparedStatement(sql, parameters);
try {
num = ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
//关闭资源
close();
}
return num;
}
/* 执行查询Sql语句 */
public ResultSet executeQuery(String sql, Object...parameters) {
createPreparedStatement(sql, parameters);
try {
rs = ps.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//ResultSet当中的数据没有被取走,不能关闭资源
return rs;
}
/* 执行带翻页的查询Sql语句
*
* pageNo 目标页号
* pageCount 每页条数
* parameters 0到无数个参数,用于表示Sql语句当中每个?对应的参数值是多少
*
*/
public ResultSet executeQueryByPage(String sql, int pageNo, int pageCount, Object...parameters) {
//处理Sql语句为带翻页的语句
sql += " limit ?,?";
createPreparedStatement(sql, parameters);
int skipIndex = 1;
if(parameters != null) {
skipIndex = parameters.length + 1;
}
try {
//为skip和pageCount赋值
ps.setInt(skipIndex, getSkip(pageNo, pageCount));
ps.setInt(skipIndex + 1, pageCount);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
rs = ps.executeQuery();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//ResultSet当中的数据没有被取走,不能关闭资源
return rs;
}
/* 求skip的值 */
public static int getSkip(int pageNo, int pageCount) {
return (pageNo - 1) * pageCount;
}
/* 关闭资源 */
public void close() {
// TODO Auto-generated method stub
try {
if(rs != null) {
rs.close();
}
if(ps != null) {
ps.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3、public class JDBCProperties {
private static Properties properties = new Properties();
static {
try {
//properties.load(new FileInputStream("F:\\javabjsx\\shopping\\src\\jdbc.properties")); //绝对路径
properties.load(JDBCProperties.class.getClassLoader().getResourceAsStream("jdbc.properties")); //相对路径
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/* 获取驱动程序的名字 */
public static String getDriver() {
return properties.getProperty("driver");
}
/* 获取数据库路径 */
public static String getUrl() {
return properties.getProperty("url");
}
/* 获取用户名 */
public static String getUser() {
return properties.getProperty("user");
}
/* 获取密码 */
public static String getPassword() {
return properties.getProperty("password");
}
}