其他文章会用到这个工具类操作数据库,避免写太多代码,直接在这个文章中展示
DBUtil 操作数据库工具类
package com.ssm.util;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 数据库工具类
*
* @author z
*/
public class DBUtil {
private String dbname;
private String user;
private String password;
private Connection conn = null;
private ResultSet rst = null;
private PreparedStatement pst = null;
static {
try {
Class.forName("com.mysql.jdbc.Driver"); // 5.7
// Class.forName("com.mysql.cj.jdbc.Driver"); // 8.0
System.out.println("驱动加载成功!");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public DBUtil(String dbname, String user, String password) {
this.dbname = dbname;
this.user = user;
this.password = password;
}
private void getConn() {
try {
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/" + dbname + "?useSSL=false&serverTimezone=UTC&characterEncoding=utf8", user, password);
System.out.println("链接建立成功!");
} catch (SQLException e) {
e.printStackTrace();
}
}
//通过map对象代替我们resultset结果集返回
// 查询
public List<Map> query(String sql, Object... obj) {
getConn();
try {
pst = conn.prepareStatement(sql);
System.out.println(sql);
for (int i = 0; i < obj.length; i++) {
System.out.println(obj[i]);
pst.setObject(i + 1, obj[i]);
}
rst = pst.executeQuery();
// 获取元数据
ResultSetMetaData metaData = rst.getMetaData();
List<Map> list = new ArrayList<>();
while (rst.next()) {
Map map = new HashMap();
// 获取查询的元数据的总列数
int count = metaData.getColumnCount();
// 列数是从1开始
for (int i = 1; i <= count; i++) {
// 获取当前记录当前索引的列名
String key = metaData.getColumnLabel(i);
// 获取记录的值
Object value = rst.getObject(key);
map.put(key, value);
}
list.add(map);
}
return list;
} catch (SQLException e) {
e.printStackTrace();
} finally {
close();
}
return null;
}
// 增,删,改
public int update(String sql, Object... obj) {
int num = 0;
getConn();
try {
pst = conn.prepareStatement(sql);
System.out.println(sql);
for (int i = 0; i < obj.length; i++) {
System.out.println(obj[i]);
pst.setObject(i + 1, obj[i]);
}
num = pst.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
close();
}
return num;
}
// 关闭流
public void close() {
try {
if (rst != null) {
rst.close();
}
if (pst != null) {
pst.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
《Java 中操作数据库的工具类》有1条评论