添加,修改,删除

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. The Last Reader Response——13-17

    Hi, everybody, nice to meet you, this is probably my best and meet you at a time, in the past a seme ...

  2. np.array与np.ndarray区别

    (Numpy中ndarray和array的区别是什么?我在哪儿能够找到numpy中相应的实现?) 答:Well, np.array is just a convenience function to ...

  3. PAT L2-021 点赞狂魔

    https://pintia.cn/problem-sets/994805046380707840/problems/994805058485469184 微博上有个“点赞”功能,你可以为你喜欢的博文 ...

  4. 配置wbepack

    proxyTable:{ //反向代理 先建立连接 '/sexLady':{ target:url//请求地址 暗号:'/sexLady ' changeOrigin:true ,//类似baseUr ...

  5. node的consoidate的插件统一

    使用consolidate.ejs.的这种形式. let express = require('express'); let app = express(); app.set('views','返回的 ...

  6. Mark 韦氏拼音 邮政式拼音 和汉语拼音

    一直感觉很多大学名字不像是汉语拼音也不像是英文,百度了下原来是三种不同的拼音方式: 转载百度百科: 邮政式拼音和威妥玛拼音法并未完全消失.北京大学(Peking University).清华大学(Ts ...

  7. pandas函数应用

    1.管道函数 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/5/24 15:03 # @Author : zhang cha ...

  8. 关于python format()用法详解

    str.format() 这个特性从python2.6而来 其实实现的效果和%有些类似 不过有些地方更方便 通过位置映射: In [1]: '{0},{1}'.format('kzc',18) Out ...

  9. SpringBoot(十六)_springboot整合JasperReport6.6.0

    现在项目上要求实现套打,结果公司里有个人建议用JaperReport进行实现,就进入这个东西的坑中.好歹经过挣扎现在已经脱离此坑中.现在我也是仅能实现读取数据库数据转成pdf进行展示,包括中文的展示. ...

  10. FEAT: Front-End Auto Testing

    FEAT FEAT: Front-End Auto Testing 前端自动化测试 jest $ yarn add -D jest # OR $ npm i -D jest https://jestj ...