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. 使用Google OR-Tools分析过去20年中国金融资产最佳配置组合

    前两天,在朋友圈里看到一张截至2022年Q2的金融资产历年收益图如下,图中列举了国内从2005年到2022年近20年主要的金融资产历年收益率,随产生想法分析和验证下面几个问题: 过去20年,基于怎样的 ...

  2. python 实现RSA公钥加密,私钥解密

    from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5 from Cryp ...

  3. STL string常用API

    #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> using namespace std; ...

  4. Potree 001 Potree介绍

    1.Potree是什么 Potree是一种基于WebGL的点云数据可视化解决方案,包含点云数据转化,以及进行可视化的源码.该解决方案的主要优势在于对点云数据进行了多尺度的管理,在数据传输和可视化上都做 ...

  5. 升级csproj文件为vs2017工程格式(SDK样式)

    csproj文件在VS2017后格式变更为SDK样式.framework项目如果需要源链接等等功能,需要进行手动升级. 升级过程 升级需要Project2015To2017Nuget包. > d ...

  6. Java中Elasticsearch 实现分页方式(三种方式)

    目录 ES 简介 ES 的特点: 一.from + size 浅分页 二.scroll 深分页 scroll删除 三.search_after 深分页 ES 简介 Elasticsearch 是一个基 ...

  7. 【MySQL】MySQL8安装

    1. MySQL8安装 安装环境 操作系统:CentOS7 MySQL版本:8.0.28 安装方式:二进制Generic 软件路径:/app/database 数据路径:/data/3306 日志路径 ...

  8. ES中的内置对象--jquery如何优化代码,少用$进行查找,减少查找次数的方法

  9. avalonia自定义弹窗

    对于使用avalonia的时候某些功能需要到一些提示,比如异常或者成功都需要对用户进行提示,所以需要单独实现弹窗功能,并且可以自定义内部组件,这一期将手动实现一个简单的小弹窗,并且很容易自定义 创建项 ...

  10. Grafana 系列文章(十):为什么应该使用 Loki

    ️URL: https://grafana.com/blog/2020/09/09/all-the-non-technical-advantages-of-loki-reduce-costs-stre ...