当前位置:网站首页>使用 JDBCUtil完成数据库增删改查
使用 JDBCUtil完成数据库增删改查
2022-07-21 05:10:00 【克莱尔因蓝】
先在mysql中新建一个表
如图,表名为friends,数据库名为demo。
封装一个JDBCUtil工具类
/** * JDBCUtil工具类 */ public class JDBCUtil { private static final String driver = "com.mysql.cj.jdbc.Driver"; //?前面的demo要改为自己需要的数据库名 private static final String url = "jdbc:mysql://localhost:3306/demo? useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf8"; //mysql用户名 private static final String userName = "root"; //mysql登录密码 private static final String password = "200297"; // 获取数据库连接 public static java.sql.Connection getConnection() { java.sql.Connection con = null; try { Class.forName(driver); con = DriverManager.getConnection(url, userName, password); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } return con; } // 数据库查询,返回结果集 public static ResultSet query(Connection con, PreparedStatement st, ResultSet rs, String sql , Object[] params) throws SQLException { st = con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); if (params != null) { for (int i = 0; i < params.length; i++) { st.setObject(i + 1, params[i]); } } rs = st.executeQuery(); return rs; } // 数据库增删改 public static int update(Connection con, String sql , Object[] params, ResultSet rs, PreparedStatement st) throws SQLException { st = con.prepareStatement(sql); for (int i = 0; i < params.length; i++) { st.setObject(i + 1, params[i]); } return st.executeUpdate(); } // 关闭数据库连接 public static void release(Connection con, Statement st, ResultSet rs) { boolean flag = true; if (rs != null) { try { rs.close(); rs = null; } catch (SQLException e) { e.printStackTrace(); flag = false; } } if (st != null) { try { st.close(); st = null; } catch (SQLException e) { e.printStackTrace(); flag = false; } } if (con != null) { try { con.close(); con = null; } catch (SQLException e) { e.printStackTrace(); flag = false; } } } }
使用数据库操作工具类完成增删改查
JDBCUtil 中工具分别为: getConnection获取数据库的连接、 query数据库的查询、 update数据库的增 删改、 release关闭数据库连接。
1.查询数据
public class Test2 { public static void main(String[] args) { Connection con = null; PreparedStatement st = null; ResultSet rs = null; try { con=JDBCUtil.getConnection(); String sql = "SELECT * FROM friends WHERE id = ? AND name = ?"; st = con.prepareStatement(sql); Object[] params = {2, "ljp"}; rs = JDBCUtil.query(con, st, rs, sql, params); while (rs.next()) { int id = rs.getInt(1); String name = rs.getString(2); System.out.println(id + " " + name + " " ); } } catch(SQLException e) { e.printStackTrace(); } finally { // 关闭数据库在finally里面 JDBCUtil.release(con, st, rs); } } }
运行结果:
2.修改数据
public class Test3 { public static void main(String[] args) { Connection con = null; PreparedStatement st = null; ResultSet rs = null; try { con = JDBCUtil.getConnection(); String sql = "UPDATE friends SET id= ? WHERE name = ?"; st = con.prepareStatement(sql); //修改id为4的name Object[] params = {4,"www"}; JDBCUtil.update(con,sql,params,rs,st); //查询并且输出修改后的结果 String sql1= "SELECT * FROM friends"; rs=JDBCUtil.query(con,st,rs,sql1,null); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); String sex = rs.getString("sex"); System.out.println(id+" "+name+" "+sex); } }catch(SQLException e) { e.printStackTrace(); } finally{ // 关闭数据库在finally里面 JDBCUtil.release(con, st, rs); } } }
运行结果:
3.删除数据
public class Test1 { public static void main(String[] args) { Connection con = null; PreparedStatement st = null; ResultSet rs = null; try { con=JDBCUtil.getConnection(); String sql = "DELETE FROM friends WHERE id = ?"; st = con.prepareStatement(sql); //删除第6个字段 Object[] params = {6}; JDBCUtil.update(con, sql,params, rs, st); String sql1="SELECT *FROM friends"; rs=JDBCUtil.query(con, st, rs, sql1, null); while (rs.next()) { int id = rs.getInt(1); String name = rs.getString(2); String sex =rs.getString(3); System.out.println(id + " " + name +" " +sex); } } catch(SQLException e) { e.printStackTrace(); } finally { // 关闭数据库在finally里面 JDBCUtil.release(con, st, rs); } } }
边栏推荐
- Find the least common multiple
- Easy language learning notes (4) -- JS decryption, graphic verification code, slider, fishbone multithreading
- 2021-08-11
- 易语言学习笔记(二)
- peoplesoft 更新表接口程序
- Some best practices of Solana SPL token
- peopleCode 理解组件缓存的结构和内容
- Add whitelist function for NFT based on Merkle tree (translation)
- MetaForce原力元宇宙之我見,教你迅速搞懂滑落機制
- PCL runtime ucrtbased Exception thrown by DLL
猜你喜欢
CentOS7 上安装 Postgresql
Navicat 16 是否支持原生苹果 Silicon M1 芯片?| 苹果用户必读
并发编程(二十)-ReentrantLock 加锁、解锁原理
CentOS 7 如何使用rpm安装单节点的MySQL
MetaForce原力元宇宙之我見,教你迅速搞懂滑落機制
yum check 时报错libmysqlclient.so.18()(64bit)
Concurrent programming (XXVII) - Atomic classes of JUC
Easy language learning notes (2)
并发编程(二十九) - 对象的内存布局
Metaforce force Meta - Cosmos, pour vous apprendre à comprendre rapidement le mécanisme de glissement
随机推荐
learning opencv3_ 2-11_ Write AVI file
(Sword finger off version) rotate the array to find the minimum value (easy to understand)
MySQL高可用实战部署方案——Galera Cluster
PeopleCode 表达式-基本表达式
Pointnet++s3dis dataset training error record
/usr/bin/applydeltarpm not installed问题解决
PeopleSoft overview and application desinger introduction
并发编程(二十)-ReentrantLock 加锁、解锁原理
SQL select 语句
Write a sushi MasterChef in Solana
佛萨奇2.0-Metaforce原力链上操作抢跑教程
「互动有礼,感谢有你」参与互动就有机会获赠 Navicat Premium 16
Voting implementation of sushitoken
NFT Market的一种实现
Easy language learning notes (III)
2021-08-11
Express+ejs+swagger-ui-dist create timely and updated rest API online interface documents
[permission promotion] MySQL authorization raising method
Concurrent programming (XXIII) - thread interrupt mechanism
并发编程(二十二)-ReentrantLock 条件变量实现原理