通用数据库辅助类DButil——增删查改优化

在这里插入图片描述

在数据库的调用中,我们会大量重复使用增删查改的代码,这使我们的代码存在大量冗余,使用通用数据库辅助类DButil可以帮助我们减少重复代码,且在不同的项目中,都可以直接调用。

package com.student.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
//通用的数据操作方法
public class DButil {
	private final String url ="jdbc:mysql://localhost/stu_test";          //在使用时,需要提前建立相应的数据库
	private final String username = "root";          //数据库名称,一般为root
	private final String password = "123456";    //数据库密码,自己设定的
	//static可以使该方法被其他类访问。
	private static Connection conn =null;
	private static PreparedStatement psm = null;
	private static ResultSet rs = null;
	//通用的增、删、改 。返回结果为成功(true)或者失败(false)
	public boolean executeUpdate(String sql,Object[] params){
		try {
			Class.forName("com.mysql.jdbc.Driver");          //显示声明
			conn = DriverManager.getConnection(url, username, password);                   //连接数据库
			//由于sql语句中的数据类型不一致,所以我们使用Object 类来存放。Object[] obs = {}来代替sql语句中的????
			psm = conn.prepareStatement(sql);
			//判断是否为空,排除空指针异常错误。
			if(params!=null){
				//使用for循环来插入sql语句中的?
				for(int i=0;i<params.length;i++){
					psm.setObject(i+1, params[i]);
				}
			}
			//使用result来接收executeUpdate的值,不为0则表示操作成功! 为0则表示操作失败!
			int  result = psm.executeUpdate();         //executeUpdate()的返回值为int型
			if(result >0){
				return true;
			}else return false;
		//抛出异常
		}catch(ClassNotFoundException e){
			e.printStackTrace();
			return false;
		}catch(SQLException e){
			e.printStackTrace();
			return false;
		}catch(Exception e){
			e.printStackTrace();
			return false;
		}
		//最后一定要记住关闭连接。
		finally{
				try {
					if(psm!=null)psm.close();               //判断是否为空,不为空则关闭连接
					if(conn!=null)conn.close();             //判断是否为空,不为空则关闭连接
				} catch (SQLException e) {         		    //抛出异常
					e.printStackTrace();
				}
		}
	}
	//通用的查询操作
	//由于查询操作ResultSet  后续操作与特定数据库数据绑定,所以查询操作只能进行到ResultSet ,且不能关闭连接,否则在调用的时候就无法取出数据。只能在其他类调用完成后关闭连接。
	public ResultSet executeQuery(String sql,Object[] params) {
		try {
			Class.forName("com.mysql.jdbc.Driver");                            //显示声明
			conn = DriverManager.getConnection(url, username, password);                  //连接数据库
			psm = conn.prepareStatement(sql);
			//判断是否为空,排除空指针异常
			if(params!=null){
				//使用for循环来插入sql语句中的?
				for(int i=0;i<params.length;i++){
					psm.setObject(i+1, params[i]);
				}
			}
			rs = psm.executeQuery();
		//抛出异常
		}catch(ClassNotFoundException e){
			e.printStackTrace();
		}catch(SQLException e){
			e.printStackTrace();
		}catch(Exception e){
			e.printStackTrace();
		}
		return rs;
	}
}
  • 47
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 67
    评论
评论 67
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A-莫天

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值