JDBC详解(实用新)

本文介绍了JDBC的基本概念,包括如何通过JDBC驱动连接MySQL数据库,演示了CRUD操作的步骤,并展示了两个示例(普通方式和预编译语句),突出了加载驱动、连接数据库和使用PreparedStatement的优势。
摘要由CSDN通过智能技术生成

JDBC

什么是JDBC:java连接数据库
在这里插入图片描述

有一些数据库,MySQL Oracle,…

假如来一个应用程序 Application,需要一个驱动来连接数据库

需要一个统一的驱动来面对不同的数据库JDBC

需要jar包的支持

  • java.sql
  • Javax.sql
  • Mysql-connecter-java…连接驱动(必须导入)

实验环境搭建
在Navicat中创建数据库

CREATE TABLE users(
id INT PRIMARY KEY, `name` VARCHAR(40), `password` VARCHAR(40), email VARCHAR(60), birthday DATE
);
INSERT INTO users(id,`name`,`password`,email,birthday) 
VALUES(1,'张三','123456','zs@qq.com','2000-01-01'); 
INSERT INTO users(id,`name`,`password`,email,birthday) 
VALUES(2,'李四','123456','ls@qq.com','2000-01-01'); 
INSERT INTO users(id,`name`,`password`,email,birthday) 
VALUES(3,'王五','123456','ww@qq.com','2000-01-01');
SELECT  * FROM users;

导入数据库依赖 mysql 驱动

<!--mysql的驱动--> 
<dependency>
<groupId>mysql</groupId> 
<artifactId>mysql-connector-java</artifactId>
 <version>5.1.47</version>
</dependency>

IDEA连接数据库
在这里插入图片描述
JDBC固定步骤:

1、加载驱动

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

2、连接数据库

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

3、向数据库发送SQL的对象Statement:CRUD

 Statement statement = connection.createStatement();

4、编写SQL(根据业务,不同的SQL)

5、执行SQL

//返回值int是受影响的行数 增删改都使用executeUpdate即可
 int i=statement.executeUpdate(sql1);

6、关闭连接
先开后关

resultSet.close();
statement.close();
connection.close();

配置信息
url
在这里插入图片描述
后边这串是固定的 其中JDBC是我建立的数据库的名字,后面的配置是固定的
JDBC?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSl=true"
在这里插入图片描述
Demo1 实现向表格中增加一个数据

package com.lding.test;

import java.sql.*;

/**
 * @program: javaweb-jdbc
 * @description:
 * @author: 王丁
 * @date: 2021-11-03 19:20
 **/
public class TestJdbc {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //配置信息
        String url="jdbc:mysql://localhost:3306/JDBC?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSl=true";
        String username="root";
        String password="wd123456";
        //1.加载驱动 抛出异常
        Class.forName("com.mysql.jdbc.Driver");
        //2.连接数据库 connection 代表数据库
        Connection connection = DriverManager.getConnection(url, username, password);
        //3.向数据库发送SQL的对象Statement CRUD
        Statement statement = connection.createStatement();
        //4.编写SQL
        String sql="select  * from users";
        String sql1="delete from users where  id=2";
        //返回值int是受影响的行数 增删改都使用executeUpdate即可
        int i=statement.executeUpdate(sql1);
        //5. 执行查询SQL,返回一个结果集
        ResultSet resultSet = statement.executeQuery(sql);
        while(resultSet.next()){
            System.out.println("id="+resultSet.getObject("id"));
            System.out.println("name="+resultSet.getObject("name"));
            System.out.println("password="+resultSet.getObject("password"));
            System.out.println("email="+resultSet.getObject("email"));
            System.out.println("birthday="+resultSet.getObject("birthday"));

        }
        //6.关闭连接,释放资源(一定要做)先开的后关
        resultSet.close();
        statement.close();
        connection.close();

    }
}

Demo2 用预编译的方式 向表格中增加一个数据

package com.lding.test;

import java.sql.*;

/**
 * @program: javaweb-jdbc
 * @description:
 * @author: 王丁
 * @date: 2021-11-03 19:51
 **/
public class TestJDBC2 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
    //配置信息
    String url="jdbc:mysql://localhost:3306/JDBC?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSl=true";
    String username="root";
    String password="wd123456";
    //1.加载驱动 抛出异常
    Class.forName("com.mysql.jdbc.Driver");
    //2.连接数据库 connection 代表数据库
    Connection connection = DriverManager.getConnection(url, username, password);
    //3.编写SQL
    String sql="insert into users(id, name, password, email, birthday) values (?,?,?,?,? )";
    //4.预编译的方式
    PreparedStatement preparedStatement = connection.prepareStatement(sql);
    preparedStatement.setInt(1,7);
    preparedStatement.setString(2,"冷丁");
    preparedStatement.setString(3,"123456");
    preparedStatement.setString(4,"22@qq.com");
    preparedStatement.setDate(5,new Date(new java.util.Date().getTime()));
    //5.执行SQL
    int i=preparedStatement.executeUpdate();
    if(i>0){
        System.out.println("插入成功!!");
    }
    //6.关闭连接,释放资源(一定要做)先开的后关
    preparedStatement.close();
    connection.close();

}
}

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值