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();
}
}