数据库简单工具封装,查询,更新,分页的要单独写一个查询,多多指教

jdbchelper 专栏收录该内容
3 篇文章 0 订阅
public class DBUtil {
	
	/**
	 * 获取数据库连接
	 */
	private static Connection getConnection(){
		
		 String url = "jdbc:mysql://localhost:3306/test1";
		 String user = "root";
		 String password = "root";
		 
		 String driverClass ="com.mysql.jdbc.Driver";
		 Connection con = null;
		 
		 try {
			 try {
				Class.forName(driverClass);
			} catch (ClassNotFoundException e) {
				System.out.println("驱动加载失败");
				e.printStackTrace();
			}
			con = DriverManager.getConnection(url, user, password);
		} catch (SQLException e) {
			
			e.printStackTrace();
		}
		 
		 return con;
	}
	
	
	/**
	 * 关闭数据库资源
	 */
	public static void close(Connection con ,PreparedStatement ps,ResultSet rs){
		
		if(con!=null){
			try {
				con.close();
			} catch (SQLException e) {
			
				e.printStackTrace();
			}
		}
		if(ps!=null){
			try {
				ps.close();
			} catch (SQLException e) {
			
				e.printStackTrace();
			}
		}
		if(rs!=null){
			try {
				rs.close();
			} catch (SQLException e) {
			
				e.printStackTrace();
			}
		}
		
	}
	

	/**
	 * 获取查询数据
	 */
	public static List<Map<String,Object>> getData(String sql ,Object...arrays){
		
		List<Map<String,Object>>  list = new ArrayList<Map<String,Object>>();
		
		
			
		Connection con =  getConnection();
		PreparedStatement ps=null;
		ResultSet rs = null;
		
		try {
			 ps = con.prepareStatement(sql);
			 
			 if(arrays!=null){
				 for(int i=0;i<arrays.length;i++){
					 ps.setObject(i+1, arrays[i]);
				 }
			 }
			 
			 rs = ps.executeQuery();
			 
			 int size = rs.getMetaData().getColumnCount();
			 
			 while(rs.next()){
				 Map<String,Object> map = new HashMap<String, Object>();
				 for(int i=0;i<size;i++){//每一行作为一个map
					 
					String columnName = rs.getMetaData().getColumnLabel(i+1); //获取查询结果的字段名称
					Object columnValue = rs.getObject(i+1);//字段名称对应的值
					
					map.put(columnName, columnValue); 
					
				 }
				 list.add(map);
				 
			 }	
				
		} catch (SQLException e) {
			
			e.printStackTrace();
		}finally{
			close(con,ps,rs);
		}
		return list;
		
	}
	
	
	
	/**
	 * 更新数据(增,删,改)
	 */
	public static void updateData(String sql ,Object...arrays){
		
		Connection con = getConnection();
		PreparedStatement ps=null;
		
		if(con!=null){
			try {
				 ps = con.prepareStatement(sql);
				
				if(ps!=null){
					if(arrays!=null){
						for(int i=0;i<arrays.length;i++)//设置sql语句中的参数值
						ps.setObject(i+1, arrays[i]);
					}
					ps.executeUpdate();
				}else{
					System.out.println("语句执行失败");
				}
				
			} catch (SQLException e) {
				
				e.printStackTrace();
			}finally{
				close(con,ps,null);
			}
			
		}
	}
}


  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页

打赏作者

Saltwater_leo

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值