目录
- 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简介
jdbc API的执行流程如下:
- 注册驱动。
- 连接数据源,如:数据库。
- 为数据库传递查询和更新指令。
- 处理数据库响应并返回的结果。
- 关闭连接。
Windows上安装mysql
mysql下载
https://dev.mysql.com/ 下载安装步骤如下:
mysql和依赖jdbc mysql实现jar包都在下图页面下载,先下载安装mysql。
如下图,选择下载5.7版本。
mysql安装
详细安装步骤参考:https://www.runoob.com/w3cnote/windows10-mysql-installer.html
实现增删改查
创建数据库和表
- 创建数据库:
CREATE DATABASE crud_db;
- 创建表:
create table t_user(
id int primary key auto_increment,
name varchar(40),
password varchar(40),
email varchar(60),
birthday date
);
- 插入数据:
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();
}
}
注意:
- 为了防止在close之前报错,最好使用try
- 为了提高性能和防止sql注入Statement用preparedStatement代替。
- 封装一下。