添加,修改,删除

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. np.array与np.ndarray区别

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

  2. shell脚本--文件查找之find命令

    首先是通过文件名称来查找,需要使用一个-name参数. 查询以  .txt结尾的文件,和以 t 开头的文件: ubuntu@ubuntu:~/test$ ls one.txt three.txt tw ...

  3. [转载]linux段页式内存管理技术

    原始博客地址: http://blog.csdn.net/qq_26626709/article/details/52742470 一.概述 1.虚拟地址空间 内存是通过指针寻址的,因而CPU的字长决 ...

  4. 转帖: Serverless架构模式简介

    Serverless架构模式简介   原贴地址:https://blog.csdn.net/chdhust/article/details/71250099?utm_medium=referral&a ...

  5. [转帖]召冠总的 SQLSERVER常用的性能诊断语句. --保存学习备查

    CopyFrom https://www.cnblogs.com/zhaoguan_wang /*常规服务器动态管理对象包括:dm_db_*:数据库和数据库对象dm_exec_*:执行用户代码和关联的 ...

  6. python格式化字符串Type Error: Format Requires Mapping 的问题

    最近几天 频繁看到有这种写法 BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s" 第一次看到的pythoner看到可能会有点懵逼 ...

  7. HashMap的实现原理--链表散列

    1.    HashMap概述 HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变. ...

  8. D3.js & Data Visualization & SVG

    D3.js & Data Visualization & SVG https://davidwalsh.name/learning-d3 // import {scaleLinear} ...

  9. 如何在Vue项目中引入jQuery?

    假设你的项目由vue-cli初始化 (e.g. vue init webpack my-project). 在你的vue项目目录下执行: npm install jquery --save-dev 打 ...

  10. iOS程序的启动执行顺序

    1 程序的入口 进入main函数, 设置AppDelegate称为函数的代理 2  程序完成加载 -[AppDelegate application:didFinishLaunchingWithOpt ...