2、JDBC-CURD
添加,修改,删除
package test.jdbc; import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import java.io.InputStream;
import java.sql.*;
import java.util.Properties; public class CURDTest { private Connection conn;
private Statement statement;
private ResultSet result; @BeforeEach
public void start() throws Exception {
Properties properties = new Properties();
InputStream in = this.getClass().getClassLoader().getResourceAsStream("jdbc.properties");
properties.load(in); String driver = properties.getProperty("driver");
String jdbcUrl = properties.getProperty("jdbcUrl");
String user = properties.getProperty("user");
String password = properties.getProperty("password"); Class.forName(driver); conn = DriverManager.getConnection(jdbcUrl, user, password);
} @AfterEach
public void end() throws Exception {
if (result != null) {
result.close();
}
if (statement != null) {
statement.close();
}
if (conn != null) {
conn.close();
}
} /**
* 通过 JDBC 向指定的数据表中插入一条记录
*
* Statement: 用于执行 SQL 语句的对象
* SQL 可以是 INSERT、UPDATE、DELETE. 不能为 SELECT
* Connection、Statement 都是应用程序和数据库服务器的连接资源. 使用后要关闭
*/
@Test
public void testStatement() throws Exception {
try {
statement = conn.createStatement();
// SQL 语句
statement.executeUpdate("INSERT INTO user (name, age) VALUES('SWT', 22)"); // SQL 占位符
PreparedStatement preparedStatement = conn.prepareStatement("INSERT INTO user (name, age) VALUES(?, ?)");
preparedStatement.setObject(1,"WC");
preparedStatement.setObject(2,23);
preparedStatement.executeUpdate(); } catch (Exception e) {
e.printStackTrace();
}
}
}

添加数据时返回主键
@Test
public void testGetKeyValue() {
try {
String sql = "INSERT INTO user (name, age) VALUES(?, ?)";
// 使用重载的 prepareStatement(sql, flag)
PreparedStatement preparedStatement = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
preparedStatement.setObject(1, "ABCDE");
preparedStatement.setObject(2, 22);
preparedStatement.execute();
// 通过 getGeneratedKeys() 获取包含了新生成的主键的 ResultSet 对象
// 在 ResultSet 中只有一列 GENERATED_KEY, 用于存放新生成的主键值
ResultSet rs = preparedStatement.getGeneratedKeys();
if(rs.next()){
System.out.println(rs.getInt("GENERATED_KEY"));
}
} catch (Exception e) {
e.printStackTrace();
}
}

查询
/**
* ResultSet: 结果集. 封装了使用 JDBC 进行查询的结果
* 调用 Statement 对象的 executeQuery(sql) 可以得到 ResultSet 结果集
* 调用 ResultSet 的 next() 方法检测下一行是否有效. 若有效该方法返回 true, 且指针下移
* 当指针对位到一行时, 可以通过调用 getXxx(index) 或 getXxx(columnName) 得到数据
*/
@Test
public void testResultSet() {
try {
// 获取 Statement
statement = conn.createStatement();
// SQL
String sql = "SELECT * FROM user";
// 执行查询, 得到 ResultSet
result = statement.executeQuery(sql);
// 处理 ResultSet
while (result.next()) {
int id = result.getInt(1);
String name = result.getString("name");
int age = result.getInt(3);
System.out.println(id + "\t" + name + "\t" + age);
} PreparedStatement preparedStatement = conn.prepareStatement("SELECT * FROM user where id = ?");
preparedStatement.setObject(1,1);
result = preparedStatement.executeQuery();
while (result.next()) {
int id = result.getInt(1);
String name = result.getString("name");
int age = result.getInt(3);
System.out.println(id + "\t" + name + "\t" + age);
}
} catch (Exception e) {
e.printStackTrace();
}
}

JDBC相关API
2、JDBC-CURD的更多相关文章
- java语言体系的技术简介之JSP、Servlet、JDBC、JavaBean(Application)
转自:https://zhangkunnan.iteye.com/blog/2040462 前言 Java语言 Java语言体系比较庞大,包括多个模块.从WEB项目应用角度讲有JSP.Servlet. ...
- 十五、JDBC操作数据库
1.数据库特点 实现数据共享.减少数据的冗余度.数据的独立性.数据集中控制.数据的一致性和可维护性. 2.数据库种类和功能 (1)层次型数据库:类似于树结构,是一组通过链接而互相联系在一起的记录. ( ...
- Spring总结——AOP、JDBC和事务的总结
1.上一次总结了 Spring 的核心三大组件(Core,Beans,Context),今天总结的 AOP.JDBC和事务都可以看成是核心三大组件的应用. 其中 Spring 的事务管理又以 AOP ...
- [JDBC-2] JDBC CURD
package com.amuos.jdbc.curd; import java.sql.Connection; import java.sql.ResultSet; import java.sql. ...
- MySql中的事务、JDBC事务、事务隔离级别
一.MySql事务 之前在Oracle中已经学习过事务了,这个东西就是这个东西,但是在MySql中用法还是有一点不同,正好再次回顾一下. 先看看MySql中的事务,默认情况下,每执行一条SQL语句,都 ...
- 一、DAO设计模式 二、DAO设计模式的优化 三、JDBC中的事务,连接池的使用
一.DAO设计模式概述###<1>概念 DAO,Data Access Object ,用于访问数据库的对象. 位于业务逻辑和数据持久化层之间,实现对数据持久化层的访问 ...
- 一、JDBC的概述 二、通过JDBC实现对数据的CRUD操作 三、封装JDBC访问数据的工具类 四、通过JDBC实现登陆和注册 五、防止SQL注入
一.JDBC的概述###<1>概念 JDBC:java database connection ,java数据库连接技术 是java内部提供的一套操作数据库的接口(面向接口编程),实现对数 ...
- Spring入门(三)— AOP注解、jdbc模板、事务
一.AOP注解开发 导入jar包 aop联盟包. aspectJ实现包 . spring-aop-xxx.jar . spring-aspect-xxx.jar 导入约束 aop约束 托管扩展类和被扩 ...
- 40、JDBC相关概念介绍
1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡,同样道理,我们安装好数据 ...
- Unit01: JDBC原理 、 JDBC基础编程
Unit01: JDBC原理 . JDBC基础编程 这个文件里面有两块内容: 1.用比较麻烦的方式连接数据库,test1(),test4() 2.创建DBTool,测试DBTool连接数据库 ,tes ...
随机推荐
- CentOS7.3安装rz、sz命令
安装命令: yum install lrzsz 关于rz.sz: lrzsz是一款在linux里可代替ftp上传和下载的程序.lrzsz是一个unix通信套件提供的X,Y,和ZModem文件传输协议. ...
- jeecg 主-附表生成代码例子
jeecg 主-附表生成代码例子 - CSDN博客https://blog.csdn.net/u010411264/article/details/51243277 JEECG Online Codi ...
- WIN10 Samba(SMB) v1 trouble shooting
现象:WIN10 Education Editon不能访问SMB V1.5的NAS服务器的共享文件夹. 一篇WIN与SMB相关的经验帖:https://jingyan.baidu.com/articl ...
- Sub-Processes and Call Activities
https://www.activiti.org/userguide/#bpmnCallActivity http://www.flowable.org/docs/userguide/index.ht ...
- WorkStation 虚拟机迁移到 ESXi的后续处理.
自己遇到了然后按照blog http://blog.sina.com.cn/s/blog_79a8b8e10102w8bm.html 解决 特此记录一下. 将Workstation的vmdk文件导入到 ...
- 软件工程_5th weeks
从周五开始经历了清明小长假,周六.周日和周一都处于假期状态,因此对于上篇博客的评论回复的很迟,而这周的工作做的也不多. 1.爆打小组 4.5日站立会议 时间:2016.4.5 15:00-15:34 ...
- 几种实现one-hot编码的方式
方法1 之前写使用sklearn进行数据挖掘-房价预测(4)-数据预处理一文中处理标签类特征时候已经提到过,使用sklearn中提供的LabelEncoder和OneHotEncoder方法 a = ...
- xhtml的3種文檔聲明類型
xhtml有三種文檔聲明類型: strict:使用嚴格的標記,避免語法上的混亂: trasitional:為不支持的css的瀏覽器編寫xhtml時: frameset:利用框架將窗口分割為兩個部分或多 ...
- python之pygal:掷一个骰子统计次数并以直方图形式显示
源码如下: # pygal包:生成可缩放的矢量图形文件,可自适应不同尺寸的屏幕显示 # 安装:python -m pip intall pygal-2.4.0-py2.py3-none-any.whl ...
- BZOJ2863[SHOI2012]魔法树——树链剖分+线段树
题目描述 输入 输出 样例输入 4 0 1 1 2 2 3 4 Add 1 3 1 Query 0 Query 1 Query 2 样例输出 3 3 2 树链剖分模板题,路径修改子树查询,注意节点 ...