JDBC - 在MyJDBCUtils中加入update(String sql , Object[] args)方法

1、在在MyJDBCUtils中加入update(String sql , Object[] args)的方法,用于更新数据库中的记录信息

2、update(String sql , Object[] args)方法,根据传进来的sql语句和参数去跟新数据库表的记录,增加了update(String sql , Object[] args)的MyJDBCUtils如下
 

package com.jdbc.dao;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
 
import com.jdbc.entity.User;
public class MyJDBCUtils {
 
	private static Connection conn;
	private static PreparedStatement pstate;
	private static ResultSet rs;
 
	// 为了程序的更好的解耦合,利用Properties文件保存连接Mysql的配置文件
	private static Properties config = new Properties();
	/**
	 * 使用static块,加载数据库的配置文件和数据库的驱动
	 */
	static {
		try {
			config.load(MyJDBCUtils.class.getClassLoader().getResourceAsStream(
					"db.properties"));
			Class.forName(config.getProperty("driver"));
		} catch (Exception e) {
			throw new ExceptionInInitializerError(e);
		}
	}
 
	/**
	 * 获取一个数据库的连接
	 * 
	 * @return
	 */
	public static Connection getConnection() {
		Connection conn = null;
		try {
			conn = DriverManager.getConnection(config.getProperty("url"),
					config.getProperty("username"),
					config.getProperty("password"));
		} catch (SQLException e) {
			throw new RuntimeException("获取连接Mysql数据库连接失败");
		}
		return conn;
	}
 
	/**
	 * 释放数据库的连接
	 * 
	 * @param conn
	 * @param st
	 * @param rs
	 */
	public static void release(Connection conn, Statement st, ResultSet rs) {
 
		if (rs != null) {
			try {
				rs.close();
			} catch (Exception e) {
				throw new RuntimeException("ResultSet关闭异常");
			}
			rs = null;
		}
		if (st != null) {
			try {
				st.close();
			} catch (Exception e) {
				throw new RuntimeException("Statement关闭异常");
			}
			st = null;
		}
		if (conn != null) {
			try {
				conn.close();
			} catch (Exception e) {
				throw new RuntimeException("Connection关闭异常");
			}
			conn = null;
		}
 
	}
 
	/**
	 * 根据User实体的id,到数据库里面取出对应的User记录,然后返回User记录
	 * 
	 * @param id
	 */
	public static User findById(int id) {
		User user = null;
		try {
			String sql = "select * from user where id = ? ";
			conn = getConnection();
			pstate = conn.prepareStatement(sql);
			pstate.setInt(1, id);
			rs = pstate.executeQuery();
			if (rs.next()) {
				user = new User();
				String uname = rs.getString(rs.findColumn("uname"));
				int age = rs.getInt(rs.findColumn("age"));
				user.setAge(age);
				user.setId(id);
				user.setUname(uname);
			}
 
		} catch (Exception e) {
			throw new RuntimeException("在数据库中,查找id为" + id + "的User记录失败." + e);
		} finally {
			// 释放资源,关闭与数据库的连接
			release(conn, pstate, rs);
		}
		return user;
	}
 
	/**
	 * 根据传进来的sql语句,来跟新数据库的表记录
	 * 
	 * @param sql
	 * @param args
	 */
	public static void update(String sql, Object[] args) {
		try {
			if (args.length < 0) {
				throw new RuntimeException("Object[] args的数组长度,不应该为空");
			}
			conn = getConnection();
			pstate = conn.prepareStatement(sql);
			for (int i = 0; i < args.length; i++) {
				pstate.setObject(i + 1, args[i]);
			}
			// 注意要调用这个方法
			pstate.executeUpdate();
 
		} catch (Exception e) {
			throw new RuntimeException("更新数据库中的记录失败" + e);
		} finally {
			// 释放资源,关闭与数据库的连接
			release(conn, pstate, rs);
		}
	}
 
	/**
	 * 根据sql语句来更新数据库表中的记录
	 * 
	 * @param sql
	 */
	public static void update(String sql) {
		try {
			conn = getConnection();
			pstate = conn.prepareStatement(sql);
			// 注意要调用这个方法
			pstate.executeUpdate();
 
		} catch (Exception e) {
			throw new RuntimeException("更新数据库中的记录失败" + e);
		} finally {
			// 释放资源,关闭与数据库的连接
			release(conn, pstate, rs);
		}
	}
}

3、调用MyJDBCUtils更新数据库中id为1的记录,将其年龄改为14岁

package com.jdbc.utils;
 
import org.junit.Test;
 
import com.jdbc.entity.User;
 
public class TestMyJDBCUtils {
 
	@Test
	public void testMyJDBCUtils() {
		User user = null;
		try {
			// 查询更新前的数据库记录信息
			user = MyJDBCUtils.findById(1);
			System.out.println(user);
 
			// 根据sql语句,更新数据库id为1的记录
			// 将其年龄age改为 14
			String sql = "update user set age = ? where id = ? ";
			Object[] args = { 14, 1 };
			MyJDBCUtils.update(sql, args);
 
			// 查询更新后的数据库记录信息,看有没有更新成功
			user = MyJDBCUtils.findById(1);
			System.out.println(user);
 
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
 
}

4、程序的运行结果

4.1更改前的数据库信息

4.2更改后的数据库信息 

4.3 程序的运行截图

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值