JDBC通过Statement执行更新操作

1. Statement:用于执行SQL语句的对象
      1)通过Connection的createStatement()方法来获取
      2)通过executeUpdate(sql)可以执行SQL语句
     3)传入的SQL可以是INSERT, UPDATE或者DELET,但不能是SELECT.
2. Connection、Statement都是应用程序和数据库服务器的连接资源,使用后一定要关闭,当在其他语句执行过程中,万一发生错误报错,不往下执行关闭操作,所以需要在finally中关闭Connection和Statement对象,确保他们一定关闭

3.关闭的顺序:先关闭后获取,即先关闭Statement后关闭Connection

具体的增删改sql语句:

a. 插入
sql = "INSERT INTO customers(ID, NAME, EMAIL, BIRTH) VALUES ('2018','王小二', '163@erpang.com', '1999-04-24')";
b. 删除
sql = "DELETE FROM customers WhERE ID = '2018'";

 

c. 更新
sql = "UPDATE customers SET EMAIL = '163@二胖.com' WHERE ID = '2017'";

截取成功插入的记录:

 

完整的代码:

package com.atguigu.jdbc;

import java.beans.Statement;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import org.junit.Test;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Driver;

public class JDBCTest {

	/*
	 * 通过JDBC向指定的数据表中增删改记录
	 * 1. Statement:用于执行SQL语句的对象
	 * 1)通过Connection的createStatement()方法来获取
	 * 2)通过executeUpdate(sql)可以执行SQL语句
	 * 3)传入的SQL可以是INSERT, UPDATE或者DELET,但不能是SELECT.
	 * 
	 * 2. Connection、Statement都是应用程序和数据库服务器的连接资源,使用后一定要关闭
	 * 需要在finally中关闭Connection和Statement对象
	 * 
	 * 3.关闭的顺序:先关闭后获取,即先关闭Statement后关闭Connection
	 * @throws Exception
	 */
	@Test
	public void testStatement() throws ClassNotFoundException, IOException, SQLException {
		//1. 获取数据库连接
		Connection conn = null;
		java.sql.Statement statement = null;
		
		try {
			conn = getConnection2();
			
			String sql = null;
			//2. 准备插入的SQL语句语句
			//a. 插入
//			sql = "INSERT INTO customers(ID, NAME, EMAIL, BIRTH) "
//					+ "VALUES ('2018','王小二', '163@erpang.com', '1999-04-24')";
			//b. 删除
//			sql = "DELETE FROM customers WhERE ID = '2018'";
			//c. 更新
			sql = "UPDATE customers SET EMAIL = '163@二胖.com' WHERE ID = '2017'";
			System.out.println(sql);
			
			//3. 执行插入
			//1)获取操作SQL语句的Statement对象:调用Connection的createStatement()方法来获取
			statement = conn.createStatement();
			
			//2)调用Statement对象的executeUpdate(sql)执行SQL语句进行插入
			statement.executeUpdate(sql);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			//4. 关闭Statement对象
			try {
				if(statement != null)
					statement.close();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} finally {
				//5. 关闭连接
				if(statement != null)
					conn.close();
			}
		}
	}
}




 

但是介于每次执行更行操作时候都要执行连接数据库和关闭Statement和Connection操作,所以我对上面进行了优化,手写了JDBCToos工具类,可以在原来的class直接调用方法

conn = JDBCTools.getConnection();
JDBCTools.release((Statement) statement, conn);

 下面是完整代码:

package com.atguigu.jdbc;

import java.beans.Statement;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import org.junit.Test;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Driver;

public class JDBCTest {

	/*
	 * 通过JDBC向指定的数据表中增删改记录
	 * 1. Statement:用于执行SQL语句的对象
	 * 1)通过Connection的createStatement()方法来获取
	 * 2)通过executeUpdate(sql)可以执行SQL语句
	 * 3)传入的SQL可以是INSERT, UPDATE或者DELET,但不能是SELECT.
	 * 
	 * 2. Connection、Statement都是应用程序和数据库服务器的连接资源,使用后一定要关闭
	 * 需要在finally中关闭Connection和Statement对象
	 * 
	 * 3.关闭的顺序:先关闭后获取,即先关闭Statement后关闭Connection
	 * @throws Exception
	 */
	@Test
	public void testStatement() throws ClassNotFoundException, IOException, SQLException {
		//1. 获取数据库连接
		Connection conn = null;
		java.sql.Statement statement = null;
		
		try {
			conn = getConnection2();
			
			String sql = null;
			//2. 准备插入的SQL语句语句
			//a. 插入
//			sql = "INSERT INTO customers(ID, NAME, EMAIL, BIRTH) "
//					+ "VALUES ('2018','王小二', '163@erpang.com', '1999-04-24')";
			//b. 删除
//			sql = "DELETE FROM customers WhERE ID = '2018'";
			//c. 更新
			sql = "UPDATE customers SET EMAIL = '163@二胖.com' WHERE ID = '2017'";
			System.out.println(sql);
			
			//3. 执行插入
			//1)获取操作SQL语句的Statement对象:调用Connection的createStatement()方法来获取
			statement = conn.createStatement();
			
			//2)调用Statement对象的executeUpdate(sql)执行SQL语句进行插入
			statement.executeUpdate(sql);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			//4. 关闭Statement对象
			try {
				if(statement != null)
					statement.close();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} finally {
				//5. 关闭连接
				if(statement != null)
					conn.close();
			}
		}
	}
	
	/*
	 * 通用的更新方法:包括INSERT、UPDATE、DELECT
	 * 版本1.
	 */
	public void update(String sql) throws ClassNotFoundException, IOException, SQLException {
		Connection conn = null;
		java.sql.Statement statement = null;
		
		try {
			conn = JDBCTools.getConnection();
			statement = conn.createStatement(); 
			statement.executeUpdate(sql);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JDBCTools.release((Statement) statement, conn);
		}
	}
}




 

JDBCTools工具类:

package com.atguigu.jdbc;

import java.beans.Statement;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

import com.mysql.jdbc.Connection;
/*
 * 手写操作JDBC的工具类,封装了一些工具方法
 * Version 1
 */
public class JDBCTools {
	
	/*
	 * 1. 获取连接的方法
	 * 通过读取配置文件从数据库服务器获取一个连接
	 * @return
	 * @throws Exception
	 */
	public static Connection getConnection() throws IOException, ClassNotFoundException, SQLException {
		//1.准备连接数据库的4个字符串
		//1).创建Properties对象
		Properties properties = new Properties();
		
		//2).获取jdbc.properties对应的输入流
		InputStream in = JDBCTools.class.getClass().getClassLoader().getResourceAsStream("jdbc.properties");
		
		//3).加载2)对应的输入流
		properties.load(in);
		
		//4)具体决定user,password等4个字符串
		String user = properties.getProperty("user");
		String password = properties.getProperty("password");
		String jdbcUrl = properties.getProperty("jdbcUrl");
		String driver = properties.getProperty("driver");
		
		//2.加载数据库驱动程序(对应Driver 实现类中有注册驱动的静态代码块)
		Class.forName(driver);
		
		//3.通过DriverManager的getConnection()方法获取数据库连接
		return (Connection) DriverManager.getConnection(jdbcUrl, user, password);
	}
	
	/*
	 * 2. 关闭Statement和Connection 
	 * @param statement
	 * @param conn
	 */
	public static void release(Statement statement, Connection conn) {
		if(statement != null) {
			try {
				((Closeable) statement).close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	  }		
		
		if(conn != null) {
			try {
				conn.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	  }
	}
}

运行结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQl语句 show databases; 打开数据库 create database 数据库名; 新建数据库 use 数据库名; 使用数据库 show tables; 打开所有表 desc 表名 查看表结构 常用Mysql语句 1.插入字段 insert into 表名(表里字段,不加括号表示插入所有字段) values (对应的字段值); 2.查看表记录 select *(或字段名) from 表名; 3.更新记录 update 表名 set 字段名 = 字段值 where 要判断的字段名 = 要判断的字段值; 如果你要进行判断的字段值为null 要写 update 表名 set 字段名 = 字段值 where 要判断的字段名 is null; 4.删除记录 delete from 表名 where 要删除的字段名 = 要删除的字段值; 1.加载驱动 Class.ForName(com.mysql.jdbc.Driver); 2.建立连接 /* String url = "jdbc:mysql://localhost:3306/student"; //3306指你当前数据库的端口号,student指你指定的哪个数据库名字 String user = "root"; //root是你的用户名 String password = "esoft"; //esoft你的数据库密码 */ connection conn = DriverManager.getconnection(url,user,password); 3.创建对象 //create object Statement ste = conn.createStatement(); 4.执行语句 // 对数据库进行插入,更新,删除等操作时用executeUpdate()返回int型。 int i = ste.executeUpdate(); // 对数据库进行查看操作时用executeQuery()返回ResultSet结果集。 ResultSet res = ste.executeQuery(); 5.处理结果 当是返回int型时 if(i > 0){ System.out.println("操作成功!"); } 当返回ResultSet型结果集时 while(res.next()){ Student stu = new Student(); stu.setSno(res.getString("Sno")); stu.setSname(res.getString("Sname")); stu.setId(res.getInt("id")); stu.setSage(res.getInt("Sage")); list.add(stu); } return list; 6.关闭连接 当是返回int型时只需关闭 ste.close(); conn.close(); 当是返回ResultSet型结果集时需关闭 res.close(); ste.close(); conn.close(); Oracle数据库 数据库4种语言 1. DCL:数据控制语言。授权 2. DDL:数据定义语言。创建、修改数据库对象 3. DML:数据操纵语言。对数据库的增、删、改、查。 4.数据库事物处理语言 常用sql语句 1.插入字段 insert into 表名(表里字段,不加括号表示插入所有字段) values (对应的字段值); 2.查看表记录 select *(或字段名) from 表名; 3.更新记录 update 表名 set 字段名 = 字段值 where 要判断的字段名 = 要判断的字段值; 如果你要进行判断的字段值为null 要写 update 表名 set 字段名 = 字段值 where 要判断的字段名 is null; 4.删除记录 delete from 表名 where 要删除的字段名 = 要删除的字段值; 5.连接运算符 (||) select 字段名||'名字' from 表名; 6.去除重复行 (distinct) select distinct 字段名 from 表名; 7.升序排序 select 字段名 from 表名 order by ; 8.降序排序 select 字段名 from 表名 order by desc; 9.在……和……之间 (between and) select 字段名 from 表名 where 要判断的字段名 between 数值 and 数值; 10.in (相当于or) not in(相当于and) select 字段名 from 表名 where 字段名 in(数值,数值); select 字段名 from 表名 where 字段名 not in(数值,数值); 11.模糊查询 like %:0个或多个任意字符 _:1个任意字符 select 字段名 from 表名 where 要判断的字段 like '%字符%'; 12.null的处理 select 字段名 from 表名 where 要判断的字段名 is null(is not null); 13.dual表是用来计算的表 可以用来round:四舍五入,trunc:截断小数位,mod取余,ceil:求大于等于某数的最小整数。例:ceil(2.35) 3,floor:求小于等于某数的最大整数。例:floor(2.35) 2。 select round(123.123,要保留的位数) from dual; select trunc(213.231,要保留的位数) from dual; 14.字符函数 substr:截取字符串 Oracle当substrate()函数的截取的索引从0或从1开始都可以。 Initcap:字符的首字母大写 Lpad:向字符串的左侧添加字符 Rpad:向字符串的右侧添加字符 Instr:是否包含某字符,从第几个字符开始,第几次出现的位置。 Replace:用一个字符串替换另一个字符串的字符 15.日期函数 sysdate:当前日期 months_between(日期值1,日期值2):求出给定日期范围的月数 add_months(日期值,给定的月数):在制定日期上加上指定的月数,求出之后的日期 next_day(日期值,星期):指定日期后的星期对应的新日期 last_day(日期值):返回指定日期所在月份的最后一天 日期进行加减的一些规律: 日期-数字 = 日期 日期+数字 = 日期 日期-日期 = 数字(天数) 16.转换函数 (1).to_char:转换成字符串 a. 日期转换..............................后面文档自己下载

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

金州饿霸

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

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

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

打赏作者

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

抵扣说明:

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

余额充值