目录

  • jdbc简介
  • Windows上安装mysql
  • mysql下载
  • mysql安装
  • 实现增删改查
  • 创建数据库和表
  • crud代码


jdbc简介

JDBC是java database connectivity的缩写,是SUN公司提供的一套操作数据库的标准规范。JDBC提供一些操作数据的API,开发者可以在java中使用这些API操作数据库,实现对表中数据的增删改查操作,JDBC相当于java和数据库之间的一座桥梁。
SUN公司制定了JDBC标准,各大数据库厂商会提供数据库驱动现这个标准,这样java才可以通过JDBC来操作实现了这个标准的数据库。如果将JDBC看做是接口的话,数据库厂商提供的数据库驱动就是这个接口的实现类。各个数据库厂商会将各自的数据库驱动打成jar包对外发布,开发者在使用时需要下载与当前数据库匹配的数据库驱动jar包。
JDBC规范让Java程序和数据库驱动实现了松耦合,使切换不同的数据库变得更加简单。参考jdbc简介

mysql与goldenDB语法 mysql数据库jdbc_mysql


jdbc API的执行流程如下:

  1. 注册驱动。
  2. 连接数据源,如:数据库。
  3. 为数据库传递查询和更新指令。
  4. 处理数据库响应并返回的结果。
  5. 关闭连接。

Windows上安装mysql

mysql下载

https://dev.mysql.com/ 下载安装步骤如下:

mysql与goldenDB语法 mysql数据库jdbc_mysql与goldenDB语法_02


mysql与goldenDB语法 mysql数据库jdbc_bc_03

mysql和依赖jdbc mysql实现jar包都在下图页面下载,先下载安装mysql。

mysql与goldenDB语法 mysql数据库jdbc_bc_04


如下图,选择下载5.7版本。

mysql与goldenDB语法 mysql数据库jdbc_mysql与goldenDB语法_05


mysql与goldenDB语法 mysql数据库jdbc_mysql_06

mysql安装

详细安装步骤参考:https://www.runoob.com/w3cnote/windows10-mysql-installer.html

实现增删改查

创建数据库和表

  1. 创建数据库:
CREATE DATABASE crud_db;
  1. 创建表:
create table t_user(
	id int primary key auto_increment,
	name varchar(40),
	password varchar(40),
	email varchar(60),
	birthday date
);
  1. 插入数据:
insert into t_user(name, password, email, birthday) 
values('tiger', '123456', 'tiger@163.com', '1994-01-05'),
('rabbit', '123456', 'rabbit@163.com', '1997-06-11'),
('sheep', '123456', 'sheep@163.com', '1995-07-15');

crud代码

package com.qiwang;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class Test {
    //如果不是本地则localhost要改成对应的ip地址,crud_test为连接的数据库名
    //如果存在时区问题,需要加上?serverTimezone=UTC
    static String url = "jdbc:mysql://localhost:3306/crud_db?serverTimezone=UTC";
    static String user = "root";
    static String password = "test123456";

    public static void main(String[] args) throws Exception {
        System.out.println("增删改查");
        //create();
        //retrieve();
        //update();
        //delete();
    }

    public static void create() throws Exception {
        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection conn = DriverManager.getConnection(url, user, password);
        Statement stmt = conn.createStatement();
        //执行sql语句,并得到返回结果flag(影响的行数)
        int flag = stmt.executeUpdate("insert into t_user(name,password,email,birthday) values ('cat','123456','cat@163.com','1993-11-11')");
        if(flag > 0){
            System.out.println("成功");
        }
        //关闭资源
        stmt.close();
        conn.close();
    }

    public static void retrieve() throws Exception {
        //使用反射(执行静态块),注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection conn = DriverManager.getConnection(url, user, password);
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("select id,name,password,email,birthday from t_user");
        while (rs.next()) { //读所有行
            //getObject 返回的是object类型对象,可以强制类型转换或者调用getInt,getString等方法。
            System.out.println(rs.getObject("id"));
            System.out.println(rs.getObject("name"));
            System.out.println(rs.getObject("password"));
            System.out.println(rs.getObject("email"));
            System.out.println(rs.getObject("birthday"));
        }
        //关闭资源
        rs.close();
        stmt.close();
        conn.close();
    }

    public static void update() throws Exception {
        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection conn = DriverManager.getConnection(url, user, password);
        Statement stmt = conn.createStatement();
        int flag = stmt.executeUpdate("update t_user set password='123' where name='cat'");
        if(flag > 0){
            System.out.println("成功");
        }
        stmt.close();
        conn.close();
    }

    public static void delete() throws Exception {
        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection conn = DriverManager.getConnection(url, user, password);
        Statement stmt = conn.createStatement();
        int flag = stmt.executeUpdate("delete from t_user where name='cat'");
        if(flag > 0){
            System.out.println("成功");
        }
        stmt.close();
        conn.close();
    }
}

注意:

  1. 为了防止在close之前报错,最好使用try
  2. 为了提高性能和防止sql注入Statement用preparedStatement代替。
  3. 封装一下。