MySQL (七)------JDBC、JDBC的增删改查、使用PreparedStatement处理CRUD、批处理、事务、Druid数据库连接池、封装JDBCTools获取连接池、DBUtils

第一章 JDBC概述

之前学习了JavaSE,编写了Java程序,数据保存在变量、数组、集合等中,无法持久化,后来学习了IO流可以将数据写入文件,但不方便管理数据以及维护数据的关系;

后来我学习了数据库管理软件MySQL,可以方便的管理数据。

那么如何将它俩结合起来呢?即Java程序<==>MySQL实现数据的存储和处理。

那么就可以使用JDBC技术。

1.1 为什么需要JDBC

1.没有JDBC

 2.有了JDBC后

 

1.2 JDBC概述

JDBC:Java Database Connectivity,它是代表一组独立于任何数据库管理系统(DBMS)的API,声明在java.sql与javax.sql包中,是SUN(现在Oracle)提供的一组接口规范。由各个数据库厂商来提供实现类,这些实现类的集合构成了数据库驱动jar。

即JDBC技术包含两个部分:

(1)java.sql包javax.sql包中的API

因为为了项目代码的可移植性,可维护性,SUN公司从最初就制定了Java程序连接各种数据库的统一接口规范。这样的话,不管是连接哪一种DBMS软件,Java代码可以保持一致性。

(2)各个数据库厂商提供的jar

因为各个数据库厂商的DBMS软件各有不同,那么内部如何通过sql实现增、删、改、查等管理数据,只有这个数据库厂商自己更清楚,因此把接口规范的实现交给各个数据库厂商自己实现。

1.3 JDBC使用步骤

1.3.1 准备工作

create database day04;

use day04;

create table user(
	id int primary key auto_increment,
	username varchar(20),
	password varchar(20),
	nickname varchar(20)
);

INSERT INTO `USER` VALUES(null,'zs','123456','老张');
INSERT INTO `USER` VALUES(null,'ls','123456','老李');
INSERT INTO `USER` VALUES(null,'wangwu','123','东方不败');

1.3.2 注册驱动

(1)将DBMS数据库管理软件的驱动jar拷贝到项目的libs目录中

例如:mysql-connector-java-5.1.36-bin.jar

(2)把驱动jar添加到项目的build  path中

(3)将驱动类加载到内存中

Class.forName("com.mysql.jdbc.Driver");

1.3.3 获取Connection连接对象

Connection conn = DriverManager.getConnection(url,username,password);

mysql的url:jdbc:mysql://localhost:3306/数据库名?参数名=参数值

jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf8                            (如果JDBC程序与服务器端的字符集不一致,会导致乱码,那么可以通过参数指定服务器端的字符集)

String url = "jdbc:mysql://localhost:3306/jdbc_test?useUnicode=true&characterEncoding=utf8";
String user = "root";
String password = "123456";
//获得连接
Connection connection = DriverManager.getConnection(url, user, password);

1.3.4 执行sql并处理结果

(1)编写sql

String sql = "select * from user";

(2)创建Statement对象

Statement statement = connection.createStatement();

(3)使用Statement对象执行sql

增删改:调用executeUpate方法

查询:调用executeQuery方法

ResultSet resultSet = statement.executeQuery(sql);

(4)处理结果

增删改:返回的是整数值,表示受到影响的数据条数  表示成功

查询:返回ResultSet结果   

  • boolean next():判断是否还有下一行

  • getString(字段名或序号),getInt(字段名或序号),getObject(字段名或序号)

while (resultSet.next()) {
    //获取每一列的数据
    System.out.println(resultSet.getObject(1));
    System.out.println(resultSet.getObject(2));
    System.out.println(resultSet.getObject(3));
    System.out.println(resultSet.getObject(4));
}

1.3.5 释放资源

原则是后创建的资源先关闭,我们会依次关闭ResultSet、Statement、Connection对象

//关闭资源
if(resultSet != null){
    resultSet.close();

}

if(statement  != null){
    statement .close();
}

if(connection != null){
    connection.close();
}

1.4 JDBC使用小结

第二章 JDBC的增删改查练习

2.1 执行添加的SQL语句

@Test
public void fun01() throws Exception {
    //增加  insert into user values(null,'tq','77777','田七');
    //1.注册驱动
    Class.forName("com.mysql.jdbc.Driver");

    //2.获得连接
    String url = "jdbc:mysql://localhost:3306/jdbc_test?useUnicode=true&characterEncoding=utf8";
    String user = "root";
    String password = "123456";
    Connection connection = DriverManager.getConnection(url, user, password);

    //3.创建执行sql语句对象
    Statement statement = connection.createStatement();

    //4.执行sql语句
    String sql = "insert into user values(null,'tq','77777','田七')";
    int rows = statement.executeUpdate(sql);
    System.out.println("几行收影响=" + rows);

    //5.释放资源
    if (statement != null) {
        statement.close();
    }
    if (connection != null) {
        connection.close();
    }
}

2.2 执行删除的SQL语句

@Test
//删除id为5的用户
public void fun03() throws Exception {
    //1.注册驱动
    Class.forName("com.mysql.jdbc.Driver");

    //2.获得连接
    String url = "jdbc:mysql://localhost:3306/jdbc_test?useUnicode=true&characterEncoding=utf8";
    String user = "root";
    String password = "123456";
    Connection connection = DriverManager.getConnection(url, user, password);

    //3.创建执行sql语句对象
    Statement statement = connection.createStatement();

    //4.执行sql语句
    String sql = "delete from user where id = 5";
    statement.executeUpdate(sql);

    //5.释放资源
    if (statement != null) {
        statement.close();
    }
    if (connection != null) {
        connection.close();
    }
}

2.3 执行修改的SQL语句

@Test
//更新 把id为4的用户的密码改成88888888
public void fun02() throws Exception {
    //1.注册驱动
    Class.forName("com.mysql.jdbc.Driver");

    //2.获得连接
    String url = "jdbc:mysql://localhost:3306/jdbc_test?useUnicode=true&characterEncoding=utf8";
    String user = "root";
    String password = "123456";
    Connection connection = DriverManager.getConnection(url, user, password);

    //3.创建执行sql语句对象
    Statement statement = connection.createStatement();

    //4.执行sql语句
    String sql = "update user set  password = '88888888' where id = 4";
    statement.executeUpdate(sql);

    //5.释放资源
    if (statement != null) {
        statement.close();
    }
    if (connection != null) {
        connection.close();
    }
}

2.4 执行查询单行数据的SQL语句

要求: 将查询到的结果封装到User对象中

User类

public class User {

    private int id;
    private String username;
    private String password;
    private String nickname;

    //提供get/set方法 Alt+Insert
    public User() {
    }

    public User(int id, String username, String password, String nickname) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.nickname = nickname;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    p
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值