最近在做一个mybatis的sql审计,所有需要原生的使用一下jdbc,基于次,复习一下自己的基础知识

github 地址: https://github.com/warriorg/nodes/tree/master/java/basic/src/main/java/me/warriorg/jdbc

package test;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import java.lang.invoke.MethodHandles;
import java.sql.*;
import java.util.Properties;
import java.util.UUID; public class CRUD {
private final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private final String dbURL = "jdbc:h2:~/test";
private final String dbDriver = "org.h2.Driver";
private final String dbUsername = "sa";
private final String dbPassword = ""; private final String tableSql = "CREATE TABLE IF NOT EXISTS Users\n" +
"(\n" +
" id varchar(40),\n" +
" account varchar(20),\n" +
" password varchar(40),\n" +
" name varchar(20),\n" +
" create_date timestamp,\n" +
" disable boolean\n" +
");"; public CRUD() {
try {
Class.forName(dbDriver);
} catch (ClassNotFoundException e) {
logger.error("初始化驱动: " + e.getMessage(), e);
}
} private Connection getConnection() throws SQLException {
Properties props = new Properties();
props.setProperty("user", dbUsername);
props.setProperty("password", dbPassword);
return DriverManager.getConnection(dbURL, props);
} private void createTable() {
try (Connection conn = getConnection()) {
logger.debug("数据库连接状态: {}", conn);
try (Statement statement = conn.createStatement()) {
statement.execute(tableSql);
logger.debug("数据库创建表成功");
}
} catch (SQLException ex) {
logger.error("数据库连接错误: " + ex.getMessage(), ex);
}
} private void select() {
String sql = "SELECT * FROM Users"; try (Connection conn = getConnection()) {
Statement statement = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet result = statement.executeQuery(sql); int rowcount = 0;
if (result.last()) {
rowcount = result.getRow();
result.beforeFirst();
}
logger.debug("获取{}数据总数:{}", result.getMetaData().getTableName(1), rowcount); while (result.next()) {
String id = result.getString("id");
String account = result.getString(2);
String password = result.getString(3);
String name = result.getString("name");
Object createDate = result.getObject(5);
Object disable = result.getObject(6); logger.debug("获取{}数据 row:{} id:{} account:{} password:{} name:{} createDate:{} disable:{}",
result.getMetaData().getTableName(1), result.getRow(), id, account, password, name, createDate, disable);
}
result.close();
statement.close(); } catch (SQLException ex) {
logger.error("数据库连接错误: " + ex.getMessage(), ex);
} } private void insert() {
String sql = "INSERT INTO Users (id, account, password, name, create_date, disable) VALUES (?, ?, ?, ?, ?, ?)";
try (Connection conn = getConnection()) {
logger.debug("数据库连接状态: {}", conn);
try (PreparedStatement statement = conn.prepareStatement(sql)) {
statement.setObject(1, UUID.randomUUID().toString());
statement.setObject(2, "admin");
statement.setObject(3, "123456");
statement.setObject(4, "admin");
statement.setTimestamp(5, new Timestamp(System.currentTimeMillis()));
statement.setBoolean(6, false);
int rowsInserted = statement.executeUpdate();
if (rowsInserted > 0) {
logger.debug("插入数据成功");
}
}
} catch (SQLException ex) {
logger.error("数据库连接错误: " + ex.getMessage(), ex);
}
} private void update() {
String sql = "UPDATE Users SET name = ? WHERE account = ?";
try (Connection conn = getConnection()) {
logger.debug("数据库连接状态: {}", conn);
try (PreparedStatement statement = conn.prepareStatement(sql)) {
statement.setObject(1, "不想当管理");
statement.setObject(2, "admin");
int rowsInserted = statement.executeUpdate();
if (rowsInserted > 0) {
logger.debug("更新数据成功");
}
}
} catch (SQLException ex) {
logger.error("数据库连接错误: " + ex.getMessage(), ex);
}
} private void delete() {
String sql = "DELETE FROM Users WHERE account=?"; try (Connection conn = getConnection()) {
logger.debug("数据库连接状态: {}", conn);
try (PreparedStatement statement = conn.prepareStatement(sql)) {
statement.setObject(1, "admin");
int rowsInserted = statement.executeUpdate();
if (rowsInserted > 0) {
logger.debug("删除数据成功");
}
}
} catch (SQLException ex) {
logger.error("数据库连接错误: " + ex.getMessage(), ex);
}
} public static void main(String[] args) throws ClassNotFoundException {
CRUD crud = new CRUD();
crud.createTable();
crud.insert();
crud.select();
crud.update();
crud.select();
crud.delete();
crud.select();
} }

jdbc crud的更多相关文章

  1. JDBC第一次学习

     JDBC(Java Data Base Connectivity,java数据库连接),由一些类和接口构成的API,它是J2SE的一部分,由java.sql,javax.sql包组成. 应用程序.J ...

  2. springboot08 jdbc

    一.JDBC&连接池 1. jdbc介绍 ​ JDBC(Java DataBase Connectivity ,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数 ...

  3. JAVA企业级开发-jdbc入门(09)

    一. jdbc介绍 JDBC全称为:Java DataBase Connectivity(java数据库连接). SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JD ...

  4. Spring Boot 系列教程4-JDBC

    JDBC Java Data Base Connectivity,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.不管是Hibe ...

  5. 第70节:Java中xml和tomcat

    第70节:Java中xml和tomcat 前言: 哭着也要看完,字数: jdbc crud - statement dao java.sql.Driver The interface that eve ...

  6. Hbase 系统架构(zhuan)

    一.系统架构 客户端连接hbase依赖于zookeeper,hbase存储依赖于hadoop client: 1.包含访问 hbase 的接口, client 维护着一些 cache(缓存) 来加快对 ...

  7. phoenix技术(安装部署和基本使用)讲解

    1.phoenix简介 Apache Phoenix是构建在HBase之上的关系型数据库层,作为内嵌的客户端JDBC驱动用以对HBase中的数据进行低延迟访问.Apache Phoenix会将用户编写 ...

  8. Hbase(五) hbase内部原理

    一.系统架构 客户端连接hbase依赖于zookeeper,hbase存储依赖于hadoop client: 1.包含访问 hbase 的接口, client 维护着一些 cache(缓存) 来加快对 ...

  9. Hadoop 面试总结

    1.简要描述如何安装配置一个开源的hadoop,只描述即可,列出完整步骤. a.创建一个用户和用户组,用来管理hadoop项目 b.修改确定ip地址:vim /etc/sysconfig/networ ...

随机推荐

  1. 自动化测试框架【linux版】:JMeter + Ant + Jenkins

    前提条件:linux安装了jmeter.ant.jenkins 安装方法参考汇总目录中对应的博文 截图看不清的,可以调大浏览器倍数看 jenkins驱动ant执行,ant驱动jmeter执行 ant调 ...

  2. CPU监控

    题目描述 Bob需要一个程序来监视CPU使用率.这是一个很繁琐的过程,为了让问题更加简单,Bob会慢慢列出今天会在用计算机时做什么事. Bob会干很多事,除了跑暴力程序看视频之外,还会做出去玩玩和用鼠 ...

  3. "大概能给你的磕盐增加一点幸福感✈"-[那些年的矫情]

    #--------------------------------------------------------------------------------------------------- ...

  4. 超详细的Guava RateLimiter限流原理解析

    超详细的Guava RateLimiter限流原理解析  mp.weixin.qq.com 点击上方“方志朋”,选择“置顶或者星标” 你的关注意义重大! 限流是保护高并发系统的三把利器之一,另外两个是 ...

  5. App测试全(转自鲁德)

    1.App测试流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间. 1.3测试资源 ...

  6. Linux系统网络编程中TCP通讯socket--send导致进程被关闭

    https://blog.csdn.net/dsanmux/article/details/52083403 https://blog.csdn.net/u011425939/article/deta ...

  7. Java第五周学习总结

    学号 2016-2017-2 <Java程序设计>第X周学习总结 教材学习内容总结 1.接口 (1)使用关键字interface来定义一个接口,接口分为接口声明和接口体,例如 interf ...

  8. Apicloud学习第一天

    Apicloud学习    apiready = function() {}  //dom加载完后执行 api.openWin({ //打开新的window name: 'main', //windo ...

  9. 基于jeesite的cms系统(五):wangEditor富文本编辑器

    一.关于wangEditor: wangEditor —— 轻量级 web 富文本编辑器,配置方便,使用简单.支持 IE10+ 浏览器. 官网:www.wangEditor.com 文档:www.ka ...

  10. java 根据经纬度坐标计算两点的距离算法

    /** * @Desc 根据经纬度坐标计算两点的距离算法<br> * @Author yangzhenlong <br> * @Data 2018/5/9 18:38 */ p ...