温故知新 jdbc相关知识(2)

本文介绍使用Java JDBC进行数据库增删改操作的方法,重点讲解PreparedStatement预编译方式的优势及其实现过程。通过实例代码展示了如何利用PreparedStatement执行SQL语句,并妥善处理数据库连接和资源释放。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JDBC的增删改操作可用同一个方法实现

java.sql.Statement的executeUpdate(sql)方法或者java.sql.PreparedStatement的executeUpdate()方法

Statement由java.sql.Connection的createStatement()方法实现;PreparedStatement由java.sql.Connection的prepareStatement(sql)方法实现。

Statement做数据库操作比较麻烦需拼接字符串,而且造成sql注入;PreparedStatement采用预编译手段通过占位符"?"避免了这些。PreparedStatement用setXxx填充占位符。

照例贴一段复用性高德代码

	/**
	 * 执行出增删改数据库操作
	 * @param sql 数据库语句
	 * @param args 填充占位符,多态表现形式个数不确定
	 */
	public void getStatment(String sql,Object... args){
		Connection conn = null;
		PreparedStatement statment = null;
		//1.获得数据库连接
		JdbcClass jdbcClass  = new JdbcClass();
		conn = jdbcClass.getConnection();
		try {
			//2.调用connection 获得statment
			statment = conn.prepareStatement(sql);
			for (int i = 0; i < args.length; i++) {
				statment.setObject(i+1, args[i]);
			}
			//3.发送sql
			statment.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			//4.关闭资源
			releaseDB(null, statment, conn);
		}
	}

	/**
	 * 关闭资源
	 * @param resultSet 结果集
	 * @param statement 申明
	 * @param conn 连接
	 */
	public void releaseDB(ResultSet resultSet,PreparedStatement statement,Connection conn){
		if(resultSet != null){
			try {
				resultSet.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally{
				if(statement != null){
					try {
						statement.close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}finally{
						if(conn != null){
							try {
								conn.close();
							} catch (SQLException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
						}
						
					}
				}
			}
		}
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值