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的更多相关文章

  1. JAVA JDBC Template的使用

    JAVA JDBC Template的使用 什么是Template? Spring框架对JDBC的简单封装.提供了一个JDBCTemplate对象简化JDBC的开发 Template使用步骤 导入ja ...

  2. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  3. Java JDBC高级特性

    1.JDBC批处理 实际开发中需要向数据库发送多条SQL语句,这时,如果逐条执行SQL语句,效率会很低,因此可以使用JDBC提供的批处理机制.Statement和PreparedStatemen都实现 ...

  4. Java JDBC下执行SQL的不同方式、参数化预编译防御

    相关学习资料 http://zh.wikipedia.org/wiki/Java数据库连接 http://lavasoft.blog.51cto.com/62575/20588 http://blog ...

  5. Java JDBC批处理插入数据操作

    在此笔记里,我们将看到我们如何可以使用像Statement和PreparedStatement JDBC API来批量在任何数据库中插入数据.此外,我们将努力探索一些场景,如在内存不足时正常运行,以及 ...

  6. Java JDBC批处理插入数据操作(转)

    在此笔记里,我们将看到我们如何可以使用像Statement和PreparedStatement JDBC API来批量在任何数据库中插入数据.此外,我们将努力探索一些场景,如在内存不足时正常运行,以及 ...

  7. java jdbc使用配置文件连接数据库:

    java jdbc使用配置文件连接数据库: 创建后缀名为:.properties的文件,文件内容包括,数据库驱动.连接的数据库地址.用户名.密码…… 以Mysql为例创建config.properti ...

  8. Java JDBC中,MySQL字段类型到JAVA类型的转换

    1. 概述 在使用Java JDBC时,你是否有过这样的疑问:MySQL里的数据类型到底该选择哪种Java类型与之对应?本篇将为你揭开这个答案. 2. 类型映射  java.sql.Types定义了常 ...

  9. Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败 及sql2008外围服务器

    转载:Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败 错误原因如下: Exception in thread & ...

  10. java jdbc ResultSet结果通过java反射赋值给java对象

    在不整合框架的情况下,使用jdbc从数据库读取数据时都得一个个的get和set,不仅累代码还显得不简洁,所以利用java的反射机制写了一个工具类,这样用jdbc从数据库拿数据的时候就不用那么麻烦了. ...

随机推荐

  1. MySQL转义字符+存储过程的使用

    MySQL中大于,大于等于,小于,小于等于的转义写法 一.左边就是原来的符号,右边就是在mybatis中代替的符号 二.如何通过mysql的存储过程创建虚拟表(临时表),并插入1000条数据 这些表通 ...

  2. 定制.NET 6.0的Middleware中间件

    大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. 在本文中,我们将学习中间件,以及如何使用它进一步定制应用程序.我们将快速学习中间件 ...

  3. 二阶段目标检测网络-Mask RCNN 详解

    ROI Pooling 和 ROI Align 的区别 Mask R-CNN 网络结构 骨干网络 FPN anchor 锚框生成规则 实验 参考资料 Mask RCNN 是作者 Kaiming He ...

  4. 【转载】EXCEL VBA 选取非连续的单元格区域——Areas集合

    出处:http://www.360doc.com/content/21/1113/17/77710807_1004011085.shtml 前面我们讲的大多是**并操作单个的单元格,或者是连续的单元格 ...

  5. 什么是RPC? (全面了解)

    一:RPC 1.什么是RPC? RPC 是指远程过程调用,也就是说两台服务器,A 和 B,一个应用部署在A 服务器上,想要调用B 服务器上应用提供的函数或方法,由于不在一个内存空间,不能直接调用,需要 ...

  6. 解决多次重连rabbitMQ失败

    项目中有用到rabbitMQ,但由于防火墙原因只有在SIT环境下才能连上rabbitMQ,在本地是无法连上rabbitMQ的.如下: 为了不影响调试,临时解决方法为禁止rabbitMQ打印日志.在lo ...

  7. java注解基础知识整理

    目录 1.注解的定义 1.1.定义一个注解 1.2.注解的使用 2.JDK内置注解 2.1.java.lang包下的注释类型 2.2.元注解 2.3.Deprecated注解 3.在注解中定义属性 3 ...

  8. 三台服务器使用docker搭建redis一主二从三哨兵,概念-搭建-整合springboot

    一.前言 redis在我们企业级开发中是很常见的,但是单个redis不能保证我们的稳定使用,所以我们要建立一个集群. redis有两种高可用的方案: High availability with Re ...

  9. Linux的串口非标准波特率设置更改

    用的是全志的R528 SDK,Linux内核是5.4,新增加一个250000的非标准波特率 参考网络大神文档,实践并记录宝贵的经验. 方法: 1.修改内核的/include/uapi/asm-gene ...

  10. BUG日记--——Linux安装Docker

    1.yum makecache fast不适合Centos8 2.解决办法 3.doucke的使用 1.关闭防火墙 # 关闭 systemctl stop firewalld # 禁止开机启动防火墙 ...