最近在做一个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. functools模块中partial的使用

    一.简介 functools.partial(func,* args,**关键字) 返回一个新的部分对象,当被调用时,其行为类似于使用位置参数args 和关键字参数关键字调用的func.如果为调用提供 ...

  2. 2019年6月pmp考试马上开始!报考9月怎么进行中文报名?

    2019年6月pmp考试马上开始了,现在还可不可以报名参加考试呢?来不来得及呢?怎么进行中文报名,考点在哪里?如果现在想报考9月怎么进行中文报名?下面慧翔天地就给大家分享! (关于甘特图的画法,项目管 ...

  3. 属性的get、set

    以年龄为例,通过属性,控制年龄的输入范围. 静态调用非静态时,需要通过对象来调用. namespace ConsoleApplication1 { class Program { private in ...

  4. About me & 留言板

    本人名字首字母gzy,就读于gryz,是高二在读生,也是一名oier. 老婆:远近渔. 爱好: 各种体育类项目,(但是不精通,不会打台球),喜欢摄影作品,喜欢听rap和摇滚,也喜欢一些描述生活英文歌曲 ...

  5. JavaEEspring整理

    Spring框架—控制反转(IOC)            1 Spring框架概述                    1.1 什么是Spring                    1.2 S ...

  6. OS + CentOS / windows / xrdp / vnc

    s 通过windows远程访问linux桌面的方法(简单) https://www.cnblogs.com/lizhangshu/p/9709531.html https://dl.fedorapro ...

  7. localStorage sessionStorage cookie indexedDB

    目录: localStorage sessionStorage cookie indexedDB localStorage localStorage存储的数据能在跨浏览器会话保留 数据可以长期保留,关 ...

  8. C++常见问题解答博客合集

    1 关于宏 https://blog.csdn.net/hanchaoman/article/details/8809951

  9. content+animation实现loading效果

    <dot></dot> dot { display: inline-block; height: 1em; line-height: 1; vertical-align: -. ...

  10. 将base64转为图片

    void Base64StringToImage(string imgCode) { try { String inputStr = imgCode; byte[] arr = Convert.Fro ...