文档章节

4.JDBC执行查,增,删,改

bharals
 bharals
发布于 2017/05/19 17:04
字数 620
阅读 7
收藏 0

查询和(删除,增加,修改)不同

1.查询有返回值,需要ResultSet结果集来封装查询到的数据。用executeQuery()方法

2.删除,增加,修改


/**
	 * 通过 JDBC 向指定的数据表中插入一条记录. 
	 * 
	 * 1. Statement: 用于执行 SQL 语句的对象
	 * 1). 通过 Connection 的 createStatement() 方法来获取
	 * 2). 通过 executeUpdate(sql) 可以执行 SQL 语句.
	 * 3). 传入的 SQL 可以是 INSRET, UPDATE 或 DELETE. 但不能是 SELECT
	 * 
	 * 2. Connection、Statement 都是应用程序和数据库服务器的连接资源. 使用后一定要关闭.
	 * 需要在 finally 中关闭 Connection 和 Statement 对象. 
	 * 
	 * 3. 关闭的顺序是: 先关闭后获取的. 即先关闭 Statement 后关闭 Connection
	 */
	@Test
	public void testStatement() throws Exception{
		//1. 获取数据库连接
		Connection conn = null;
		Statement statement = null;
		
		try {
			conn = getConnection2();
			
			//3. 准备插入的 SQL 语句
			String sql = null;
			
//			sql = "INSERT INTO customers (NAME, EMAIL, BIRTH) " +
//					"VALUES('XYZ', 'xyz@atguigu.com', '1990-12-12')";
//			sql = "DELETE FROM customers WHERE id = 1";
			sql = "UPDATE customers SET name = 'TOM' " +
					"WHERE id = 4";
			System.out.println(sql);
			
			//4. 执行插入. 
			//1). 获取操作 SQL 语句的 Statement 对象: 
			//调用 Connection 的 createStatement() 方法来获取
			statement = conn.createStatement();
			
			//2). 调用 Statement 对象的 executeUpdate(sql) 执行 SQL 语句进行插入
			statement.executeUpdate(sql);
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			try {
				//5. 关闭 Statement 对象.
				if(statement != null)
					statement.close();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} finally{
				//2. 关闭连接
				if(conn != null)
					conn.close();							
			}
		}
		
	}


查询到的结果是一个集合:

/**
	 * ResultSet: 结果集. 封装了使用 JDBC 进行查询的结果. 
	 * 1. 调用 Statement 对象的 executeQuery(sql) 可以得到结果集.
	 * 2. ResultSet 返回的实际上就是一张数据表. 有一个指针指向数据表的第一样的前面.
	 * 可以调用 next() 方法检测下一行是否有效. 若有效该方法返回 true, 且指针下移. 相当于
	 * Iterator 对象的 hasNext() 和 next() 方法的结合体
	 * 3. 当指针对位到一行时, 可以通过调用 getXxx(index) 或 getXxx(columnName)
	 * 获取每一列的值. 例如: getInt(1), getString("name")
	 * 4. ResultSet 当然也需要进行关闭. 
	 */
	@Test
	public void testResultSet(){
		//获取 id=4 的 customers 数据表的记录, 并打印
		
		Connection conn = null;
		Statement statement = null;
		ResultSet rs = null;
		
		try {
			//1. 获取 Connection
			conn = JDBCTools.getConnection();
			System.out.println(conn);
			
			//2. 获取 Statement
			statement = conn.createStatement();
			System.out.println(statement);
			
			//3. 准备 SQL
			String sql = "SELECT id, name, email, birth " +
					"FROM customers";
			
			//4. 执行查询, 得到 ResultSet
			rs = statement.executeQuery(sql);
			System.out.println(rs);
			
			//5. 处理 ResultSet
			while(rs.next()){
				int id = rs.getInt(1);
				String name = rs.getString("name");
				String email = rs.getString(3);
				Date birth = rs.getDate(4);
				
				System.out.println(id);
				System.out.println(name);
				System.out.println(email);
				System.out.println(birth);
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			//6. 关闭数据库资源. 
			JDBCTools.release(rs, statement, conn);
		}
		
	}


© 著作权归作者所有

共有 人打赏支持
bharals
粉丝 0
博文 26
码字总数 46307
作品 0
XiaoBingBy/Exam

#Exam 考试系统 在大三上期完成的期末实训。一个简单在在线考试系统。分为管理出题和考试界面考试。 #鸣谢 我们团队开发所有人员。 #内置功能 后台 试卷管理(增、删、改、查) 题库管理(增...

XiaoBingBy
2017/05/27
0
0
完整的权限管理系统 - LaySSH

LaySSH是一款完全开源免费的开发框架,基于LayUI+SpringMVC+Spring+Hibernate+Mysql搭建而成,内置代码生成器,能够快速生成增删改查代码,节省开发时间,快速构建企业级的web应用系统。 该框...

herun
02/02
0
0
Web APi之EntityFramework【CRUD】(三)

前言 之前我们系统学习了EntityFramework,个人觉得有些东西不能学了就算完了,必须要学以致用,在Web API上也少不了增(C)、删(D)、改(U)、查(R)。鉴于此,我们通过EF来实现Web API...

jeffcky
2015/09/19
0
0
phachon/wmq-admin

Wmq-Admin 根据 WMQ 服务提供的后台管理系统 实现了对 WMQ 服务的用户,节点,消息,消费,日志的统一操作管理 预览 消息管理 消费管理 WMQ 基于 RabbitMQ 开发的消息队列服务,支持 http 协...

phachon
2017/10/14
0
0
wmq-admin 1.0 正式发布,WMQ 管理后台

wmq-admin 1.0 正式发布! wmq介绍 基于 RabbitMQ 开发的消息队列服务,支持 http 协议 https://gitee.com/snail/wmq-go Wmq-Admin 根据 WMQ 服务提供的后台管理系统 实现了对 WMQ 服务的用户...

phachon
2017/10/16
1K
5

没有更多内容

加载失败,请刷新页面

加载更多

下一页

谷歌 Fuchsia 上手体验,将取代Android/win10

在手机市场领域,Google表现很抢眼,毫无疑问,Android 至今在移动操作系统的市场份额占据绝对领先地位,但是 Android 仍然存在不少问题,碎片化问题严重,在平板以及大屏幕设备上表现糟糕,...

linux-tao
21分钟前
1
0
List、Array与ArrayList

数组在内存中是连续存储的,所以它的索引速度很快,而且赋值和修改元素也非常快,比如: string[] s=new string[3];//赋值 s[0]="a"; s[1]="b"; s[2]="c";//修改 s[1]="b1"; 但是数组...

shimmerkaiye
24分钟前
0
0
Linux 的Lnmp环境下为mysql添加环境变量

一.问题 在Linux 安装完Lnmp 环境后 , 连接Mysql 告诉没有这条命令 mysql -uroot -p 命令失效 因为是源码安装的,所以会出现这样的的原因 。集成环境是不会出现的。 其实很简单,只需要给m...

15834278076
26分钟前
3
0
apolloxlua include函数

include函数不是单独使用的函数, 他并不是标准库的一部分, 你可以使用include函数将某个后缀为 .aop的文档包含到你的文档流中。 因为include是单独处理流, 所以不会在主处理流程中有所表示...

钟元OSS
29分钟前
0
0
【转载分享】做一名较真的工程师

近些年与我共事过的同事,一定知道我至今仍有一个较真的性格。我会:指出同事所写代码的不当命名问题(并帮助改进);指出同事所写文档中的逻辑混乱问题(并辅以修订);指出同事所写PPT中乱...

HellerZhang
31分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部