java-jdbc-druid
0、简介
- Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
- JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。
为了简化 开发人员的(对数据的统一)操作,提供了一个java操作数据库规范,对于开发人员来说,我们只需要掌握JDBC接口的操作即可;
1、添加驱动
<!-- 数据库驱动 -->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
2、增加配置文件
className=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/wangdb?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
user=admin
password=Admin@123
3、代码
public class JdbcDemo {
public static void main(String[] args) {
PreparedStatement statement = null;
Connection connection = null;
ResultSet set = null;
try {
// 1、加载配置文件
Properties props = new Properties();
props.load(new FileInputStream("properties.properties"));
String className = props.getProperty("className");
String url = props.getProperty("url");
String user = props.getProperty("user");
String password = props.getProperty("password");
// 2、加载驱动
Class.forName(className);
// 3、获取连接
connection = DriverManager.getConnection(url, user, password);
// 4、sql语句 可以通过
String sql =
"select t.Id, t.`NAME`,t.DEPT_NAME,t.ID_NO,t.CreateDate from user_info t where id=?";
// 5、获得Satement执行sql语句 或者 获得PrepareStatement执行sql语句
statement = connection.prepareStatement(sql);
// 6、设置参数,一个?对应一个值,不能有其他的关键字
statement.setObject(1, 1);
// 7、执行语句 executeUpdate:增删改 executeQuery:执行查询操作
set = statement.executeQuery();
// 8、从ResultSet中将数据传入到我们自己定义的对象中
while (set.next()) {
int id = set.getInt("id");
String name = set.getString("name");
String idNo = set.getString("ID_NO");
Date date = set.getDate("CreateDate");
Timestamp time = set.getTimestamp("CreateDate");
System.out.println("id:" + id);
System.out.println("name:" + name);
System.out.println("idNo:" + idNo);
System.out.println("date:" + date);
System.out.println("time:" + time);
System.out.println("---------------");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 9、关闭连接
try {
if (set != null) {
set.close();
}
Objects.requireNonNull(connection).close();
if (statement != null) {
statement.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
4、开启mysql预编译功能
- 连接参数增加
className=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/wangdb?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false&&useServerPrepStmts=true
user=admin
pass
5、打印mysql日志
修改 mysql.ini
[mysqld]
## 增加日志监控
log-output=FILE
general-log=1
general_log_file="D:\java\mysql\phpstudy_pro\Extensions\MySQL5.7.26\mysql.log"
slow-query-log=1
slow_query_log_file="D:\java\mysql\phpstudy_pro\Extensions\MySQL5.7.26\mysql_slow.log"
long_query_time=2
6、事务
try {
// ============开启事务==========
conn.setAutoCommit(false);
//5. 执行sql
int count1 = stmt.executeUpdate(sql1);//受影响的行数
//6. 处理结果
System.out.println(count1);
int i = 3/0;
//5. 执行sql
int count2 = stmt.executeUpdate(sql2);//受影响的行数
//6. 处理结果
System.out.println(count2);
// ============提交事务==========
//程序运行到此处,说明没有出现任何问题,则需求提交事务
conn.commit();
} catch (Exception e) {
// ============回滚事务==========
//程序在出现异常时会执行到这个地方,此时就需要回滚事务
conn.rollback();
e.printStackTrace();
}
7、使用连接池Druid
- 配置文件
driver-class-name=com.mysql.cj.jdbc.Driver
username=admin
password=Admin@123
url=jdbc:mysql://localhost:3306/wangdb?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false&&useServerPrepStmts=true
initialSize=5
minIdle=5
maxActive=20
- 程序
public class DruidDemo {
public static void main(String[] args) throws Exception {
PreparedStatement statement = null;
Connection connection = null;
ResultSet set = null;
// 1、导入jar包
// 2、 加载配置文件,路径根据情况自己写
String propsPath = System.getProperty("user.dir") + "\\day02\\src\\druid.properties";
Properties prop = new Properties();
prop.load(new FileInputStream(propsPath));
// 3、获取连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
// 4、获取连接
connection = dataSource.getConnection();
// 5、编写sql
String sql =
"select t.Id, t.`NAME`,t.DEPT_NAME,t.ID_NO,t.CreateDate from user_info t where id=?";
// 6、获取PrepairStatement
statement = connection.prepareStatement(sql);
// 7、执行sql语句
statement.setObject(1, 1);
set = statement.executeQuery();
// 8、遍历
while (set.next()) {
int id = set.getInt("id");
String name = set.getString("name");
String idNo = set.getString("ID_NO");
Date date = set.getDate("CreateDate");
Timestamp time = set.getTimestamp("CreateDate");
System.out.println("id:" + id);
System.out.println("name:" + name);
System.out.println("idNo:" + idNo);
System.out.println("date:" + date);
System.out.println("time:" + time);
System.out.println("---------------");
}
}
}
java-jdbc-druid的更多相关文章
- JAVA JDBC Template的使用
JAVA JDBC Template的使用 什么是Template? Spring框架对JDBC的简单封装.提供了一个JDBCTemplate对象简化JDBC的开发 Template使用步骤 导入ja ...
- java jdbc 连接mysql数据库 实现增删改查
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
- Java JDBC高级特性
1.JDBC批处理 实际开发中需要向数据库发送多条SQL语句,这时,如果逐条执行SQL语句,效率会很低,因此可以使用JDBC提供的批处理机制.Statement和PreparedStatemen都实现 ...
- Java JDBC下执行SQL的不同方式、参数化预编译防御
相关学习资料 http://zh.wikipedia.org/wiki/Java数据库连接 http://lavasoft.blog.51cto.com/62575/20588 http://blog ...
- Java JDBC批处理插入数据操作
在此笔记里,我们将看到我们如何可以使用像Statement和PreparedStatement JDBC API来批量在任何数据库中插入数据.此外,我们将努力探索一些场景,如在内存不足时正常运行,以及 ...
- Java JDBC批处理插入数据操作(转)
在此笔记里,我们将看到我们如何可以使用像Statement和PreparedStatement JDBC API来批量在任何数据库中插入数据.此外,我们将努力探索一些场景,如在内存不足时正常运行,以及 ...
- java jdbc使用配置文件连接数据库:
java jdbc使用配置文件连接数据库: 创建后缀名为:.properties的文件,文件内容包括,数据库驱动.连接的数据库地址.用户名.密码…… 以Mysql为例创建config.properti ...
- Java JDBC中,MySQL字段类型到JAVA类型的转换
1. 概述 在使用Java JDBC时,你是否有过这样的疑问:MySQL里的数据类型到底该选择哪种Java类型与之对应?本篇将为你揭开这个答案. 2. 类型映射 java.sql.Types定义了常 ...
- Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败 及sql2008外围服务器
转载:Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败 错误原因如下: Exception in thread & ...
- java jdbc ResultSet结果通过java反射赋值给java对象
在不整合框架的情况下,使用jdbc从数据库读取数据时都得一个个的get和set,不仅累代码还显得不简洁,所以利用java的反射机制写了一个工具类,这样用jdbc从数据库拿数据的时候就不用那么麻烦了. ...
随机推荐
- MongoDB安全加固,防止数据库攻击删除勒索威胁
前言: 今天发现前段时间自己搭建的一个系统的MongoDB数据找不到了,觉得很奇妙,然后登上MongoDB数据库发现多了一个名为READ__ME_TO_RECOVER_YOUR_DATA的数据库,里面 ...
- SQLMap入门——判断文本中的请求是否存在注入
从文件中加载HTTP请求,SQLMap可以从一个文本文件中获取HTTP请求,这样就可以不设置其他参数(如cookie.POST数据等),txt文件中的内容为Web数据包 文本文件如图(请求数据可以通过 ...
- python循环结构之while循环
在python中,除了for循环,还有一个while循环 for循环:循环次数是明确了的 while循环:循环次数不确定,循环停止条件由用户自定义 # while语句结构 while 判断条件: 执行 ...
- Linux第四章 进程
4.1 前言 本章讨论进程概念.资源.属性. 4.2 内核和进程的关系 当系统启动时,内核代码被加载到内存,初始化之后,启动第一个用户进程,然后内核的代码就等着用户进程来调度了. 4.3 进程是程序的 ...
- 外包公司中的"炼狱",极度摧残,避免踩坑。
引言 前些天羊了,一直没有更新.今天给大家聊聊两家外包公司,遇到的小伙伴避免踩坑. 咱不说那些虚的,什么尽量不要去外包公司,尽可能找甲方,这些谁都知道,肯定是因为一些原因(比如学历.项目经验.技术有待 ...
- Git和Maven的学习笔记
Git 1.Git简介 Git 是一个免费的.开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种 项目. Git 易于学习,占地面积小,性能极快. 它具有廉价的本地库,方便的暂存区域和多个 ...
- python 之路 37 Navicat 可视化软件使用、 pymysql模块使用
多表查询的两种方法 方式1:连表操作 inner join 内连接 select * from emp inner join dep on emp.dep_id=dep.id; 只连接两张表中公有的数 ...
- HHKB Programming Contest 2022 Winter(AtCoder Beginner Contest 282)
前言 好久没有打 AtCoder 了.有点手生.只拿到了 \(\operatorname{rk}1510\),应该上不了多少分. 只切了 \(\texttt{A,B,C,D}\) 四题. A - Ge ...
- (21)go-micro微服务logstash使用
目录 一 Logstash介绍 二 Logstash作用 三 Logstash工作原理 四 Logstash安装 1.拉取镜像 2.运行命令 3.查看是否运行 五 Logstash使用 六 最后 一 ...
- 读Java8函数式编程笔记08_测试、调试和重构
1. Lambda表达式的单元测试 1.1. 单元测试是测试一段代码的行为是否符合预期的方式 1.2. Lambda表达式没有名字,无法直接在测试代码中调用 1.2.1. 将Lambda表达式放入一个 ...