jdbc crud
最近在做一个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的更多相关文章
- JDBC第一次学习
JDBC(Java Data Base Connectivity,java数据库连接),由一些类和接口构成的API,它是J2SE的一部分,由java.sql,javax.sql包组成. 应用程序.J ...
- springboot08 jdbc
一.JDBC&连接池 1. jdbc介绍 JDBC(Java DataBase Connectivity ,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数 ...
- JAVA企业级开发-jdbc入门(09)
一. jdbc介绍 JDBC全称为:Java DataBase Connectivity(java数据库连接). SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JD ...
- Spring Boot 系列教程4-JDBC
JDBC Java Data Base Connectivity,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.不管是Hibe ...
- 第70节:Java中xml和tomcat
第70节:Java中xml和tomcat 前言: 哭着也要看完,字数: jdbc crud - statement dao java.sql.Driver The interface that eve ...
- Hbase 系统架构(zhuan)
一.系统架构 客户端连接hbase依赖于zookeeper,hbase存储依赖于hadoop client: 1.包含访问 hbase 的接口, client 维护着一些 cache(缓存) 来加快对 ...
- phoenix技术(安装部署和基本使用)讲解
1.phoenix简介 Apache Phoenix是构建在HBase之上的关系型数据库层,作为内嵌的客户端JDBC驱动用以对HBase中的数据进行低延迟访问.Apache Phoenix会将用户编写 ...
- Hbase(五) hbase内部原理
一.系统架构 客户端连接hbase依赖于zookeeper,hbase存储依赖于hadoop client: 1.包含访问 hbase 的接口, client 维护着一些 cache(缓存) 来加快对 ...
- Hadoop 面试总结
1.简要描述如何安装配置一个开源的hadoop,只描述即可,列出完整步骤. a.创建一个用户和用户组,用来管理hadoop项目 b.修改确定ip地址:vim /etc/sysconfig/networ ...
随机推荐
- ElasticSearch常用操作
查看某个INDEX库某个TYPE表,某个字段的分词结果 GET /${index}/${type}/${id}/_termvectors?fields=${fields_name}http://19 ...
- DataTable行列转置
DataTable dtNew = new DataTable(); dtNew.Columns.Add("ColumnName", typeof(string)); ; i &l ...
- [算法竞赛入门经典]Message Decoding,ACM/ICPC World Finals 1991,UVa213
Description Some message encoding schemes require that an encoded message be sent in two parts. The ...
- CAD快捷键
F1: 获取帮助 F2: 实现作图窗和文本窗口的切换 F3: 控制是否实现对象自动捕捉 F4:数字化仪控制 F5: 等轴测平面切换 F6: 控制状态行上坐标的显示方式 F7: 栅格显示模式控制 F8: ...
- 用SQL表达连接与外连接
关系代数运算中,有连接运算,又分为θ连接和外连接 标准SQL语言中连接运算通常是采用 SELECT 列名[[,列名]...] FROM 表名1,表名2,... WHERE 检索条件; SQL的高级语法 ...
- 转:为什么要有Spring?
Java后端技术https://mp.weixin.qq.com/s?__biz=MzI1NDQ3MjQxNA==&mid=2247484822&idx=1&sn=6fbee2 ...
- 004 使用scrapy框架爬虫
0. 建立housePro的scrapy爬虫框架 # 1. 在终端输入,建立housePro项目scrapy startproject housePro# 2. 进入houseProcd houseP ...
- JAVA_Sprint学习(一)
保存用户信息的编程思维 传统的思想,就是建立一个类之后,然后将用户的姓名和密码,以及添加用户等操作都放在一个main中, 按照抽象编程的思想而言, 首先建立一个类User,用来是表示用户的具体信息Us ...
- python 数据分析工具之 numpy pandas matplotlib
作为一个网络技术人员,机器学习是一种很有必要学习的技术,在这个数据爆炸的时代更是如此. python做数据分析,最常用以下几个库 numpy pandas matplotlib 一.Numpy库 为了 ...
- request模块
一 介绍 二 基于GET请求 三 基于POST请求 四 响应Response 五 高级用法 一 介绍 # 介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模 ...