添加,修改,删除

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的更多相关文章

  1. java语言体系的技术简介之JSP、Servlet、JDBC、JavaBean(Application)

    转自:https://zhangkunnan.iteye.com/blog/2040462 前言 Java语言 Java语言体系比较庞大,包括多个模块.从WEB项目应用角度讲有JSP.Servlet. ...

  2. 十五、JDBC操作数据库

    1.数据库特点 实现数据共享.减少数据的冗余度.数据的独立性.数据集中控制.数据的一致性和可维护性. 2.数据库种类和功能 (1)层次型数据库:类似于树结构,是一组通过链接而互相联系在一起的记录. ( ...

  3. Spring总结——AOP、JDBC和事务的总结

    1.上一次总结了 Spring 的核心三大组件(Core,Beans,Context),今天总结的 AOP.JDBC和事务都可以看成是核心三大组件的应用. 其中 Spring 的事务管理又以 AOP ...

  4. [JDBC-2] JDBC CURD

    package com.amuos.jdbc.curd; import java.sql.Connection; import java.sql.ResultSet; import java.sql. ...

  5. MySql中的事务、JDBC事务、事务隔离级别

    一.MySql事务 之前在Oracle中已经学习过事务了,这个东西就是这个东西,但是在MySql中用法还是有一点不同,正好再次回顾一下. 先看看MySql中的事务,默认情况下,每执行一条SQL语句,都 ...

  6. 一、DAO设计模式 二、DAO设计模式的优化 三、JDBC中的事务,连接池的使用

    一.DAO设计模式概述###<1>概念 DAO,Data Access Object ,用于访问数据库的对象. 位于业务逻辑和数据持久化层之间,实现对数据持久化层的访问![](1.png) ...

  7. 一、JDBC的概述 二、通过JDBC实现对数据的CRUD操作 三、封装JDBC访问数据的工具类 四、通过JDBC实现登陆和注册 五、防止SQL注入

    一.JDBC的概述###<1>概念 JDBC:java database connection ,java数据库连接技术 是java内部提供的一套操作数据库的接口(面向接口编程),实现对数 ...

  8. Spring入门(三)— AOP注解、jdbc模板、事务

    一.AOP注解开发 导入jar包 aop联盟包. aspectJ实现包 . spring-aop-xxx.jar . spring-aspect-xxx.jar 导入约束 aop约束 托管扩展类和被扩 ...

  9. 40、JDBC相关概念介绍

    1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡,同样道理,我们安装好数据 ...

  10. Unit01: JDBC原理 、 JDBC基础编程

    Unit01: JDBC原理 . JDBC基础编程 这个文件里面有两块内容: 1.用比较麻烦的方式连接数据库,test1(),test4() 2.创建DBTool,测试DBTool连接数据库 ,tes ...

随机推荐

  1. <构建之法>13——17章的读后感

    第13章:软件测试 问题:对于这么多种的测试方法,怎么才能最有效的选取? 第14章:质量保证 问题:很多工程师都把大多数时间花在软件质量上.一成不变是无法创新的.如何在保证质量的情况下,又得到创新呢? ...

  2. “数学口袋精灵”App的第三个Sprint计划----开发日记(第十一天12.17)

    项目进度: 基本完成一个小游戏,游戏具有:随机产生算式,判断对错功能.通过轻快的背景音乐,音效,给玩家提供一个良好的氛围.  任务分配: 冯美欣:设计"数学口袋精灵"App图标.整 ...

  3. SVN入门教程

    1. 什么是SVN SVN全名Subversion,即版本控制系统.SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统. 作为一个开源的版本控制系统,Subversion管理者随时间改变 ...

  4. MySQL基础~~编程语法

    常量 数值 字符串:单引号或者双引号括起来.包括普通字符串或者日期格式的字符串. 布尔值:false(FALSE)对应数字值为0.true(TRUE)对应数字值为1. NULL:可以参考http:// ...

  5. Linux curl 一例

    root@PC-RENGUOQIANG:~# curl http://kermit:kermit@192.168.66.182:8080/activiti-rest/service/repositor ...

  6. Delphi处理Http请求自定义Header

    在HTTP请求中,get方法是默认的,但在URL地址长度是有限的,请求方法能传送的数据也是有限的,一般get方法传递的数据不能大于2KB,当get请求方法传递的数据长度不能满足需求时,就需要采用另一种 ...

  7. python 授权

    1.“包装”意思是一个已经存在的对象进行包装,不管他是数据类型还是一段代码,可以是对一个已经存在的对象增加新的,删除不要的或者修改其他已经存在的功能 2.包装 包括定义一个类,他的实例拥有标准类型的核 ...

  8. C#利用反射来判断对象是否包含某个属性的实现方法

    本文实例展示了C#利用反射来判断对象是否包含某个属性的实现方法,对于C#程序设计人员来说有一定的学习借鉴价值. 具体实现代码如下: /// <summary> /// 利用反射来判断对象是 ...

  9. Cenos7 添加service,开机启动

    本地有一个 data-service.jar 1. 编写启动脚本  data-service-start [root@iz2ze0fq2isg8vphkpos5sz shell]# more data ...

  10. IDEA上传码云报错Push rejected: Push to origin/master was rejected

    原因是README.md文件冲突,码云上在创建项目的时候不要初始化README.md,然后再用IDEA上传