package cn.hp.util;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DBHelper {
//驱动
private static String driver = "com.mysql.jdbc.Driver";
//访问数据的链接路径
private static String url = "jdbc:mysql:///database?useSSL=false&serverTimezone=UTC&characterEncoding=utf8";
private static String name = "root";
private static String pwd = "root";
private static Connection conn;
private static PreparedStatement ps;
private static ResultSet rs;
private DBHelper() {
}
static {
try {
Class.forName(driver);
System.out.println("驱动加载成功!");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 获取链接
*/
public static Connection getConn() {
try {
conn = DriverManager.getConnection(url, name, pwd);
System.out.println("数据库链接建立成功!");
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* 关闭资源
*/
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);
}
/**
* 查询方法
*
* @param sql sql语句
* @param obj 参数
* @return List<Map>
*/
public static List<Map> select(String sql, Object... obj) {
List<Map> list=new ArrayList<>();
// 1.建立连接
getConn();
try {
// 2.创建语句对象,预编译
ps = conn.prepareStatement(sql);
System.out.println("sql语句:"+sql);
// 3.参数处理 itar 普通for循环
for (int i = 0; i < obj.length; i++) {
System.out.println("第"+i+"个参数:"+obj[i]);
ps.setObject(i + 1, obj[i]);
}
// 4.执行sql,得到结果集
rs = ps.executeQuery();
ResultSetMetaData metaData = rs.getMetaData();//元数据,查询的数据结构
while (rs.next()) {
Map map = new HashMap();
int columnCount = metaData.getColumnCount();//字段的列数,id,name 获取的就是2
for (int i = 0; i < columnCount; i++) {
//metaData.getColumnLabel(i+1)//这个的从1开始获取第几列的字段名称
//rs.getObject(i+1)//根据列数(从1开始)数据集中的数据
map.put(metaData.getColumnLabel(i + 1), rs.getObject(i + 1));
}
list.add(map);
}
return list;
} catch (SQLException e) {
e.printStackTrace();
} finally {
close(conn, ps, rs);
}
return null;
}
/**
* 编辑方法
*
* @param sql sql语句
* @param obj 参数
* @return List<Map>
*/
public static int update(String sql, Object... obj) {
int l = 0;
// 1.建立连接
getConn();
try {
// 2.创建语句对象,预编译
ps = conn.prepareStatement(sql);
System.out.println("sql语句:"+sql);
// 3.参数处理 itar 普通for循环
for (int i = 0; i < obj.length; i++) {
System.out.println("第"+i+"个参数:"+obj[i]);
ps.setObject(i + 1, obj[i]);
}
// 4.执行sql,得到结果集
l = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
close(conn, ps, rs);
return l;
}
}
public static void main(String[] args) {
System.out.println(getConn());
}
}
select,update封装
最新推荐文章于 2024-11-04 20:33:37 发布
这篇文章介绍了DBHelper类,用于简化Java应用程序中数据库连接、查询和更新操作。通过预编译语句,提高效率并确保参数安全。核心方法包括getConn(), select(), update()等。
摘要由CSDN通过智能技术生成