JDBC(Java DataBase Connectivity)
简介:JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。也可以通过名字中得知通俗的说:jdbc就是java数据库连接。
sun公司为了简化开发人员的(对数据库的统一驱动)操作,提供了java操作数据库的规范,简称:JDBC
**自从有了JDBC驱动后,向各种关系数据发送SQL语句就是一件很容易的事。**有了JDBC API,就不必为访问mysql数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问SQLserver数据库又编写另一个程序等等。
程序员只需用JDBC API写一个程序就够了。它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言中所说的"编写一次,处处运行"的效果。
通过下图了解:
需要jar的支持
<dependencies>
<dependency>
<!-- 导入数据库依赖-->
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
</dependencies>
环境的搭建
- 配置信息:固定写法(jdbc:mysql😕/localhost:3306/jdbc?useUnicode=true&characterEncoding=UTF-8);
- jdbc:连接的数据库(例如:mysql、Oracle)//本地地址:连接数据库的端口号(默认3306)/数据库的名称?useUnicode=true&characterEncoding=UTF-8—>解决中文乱码问题
- 加载驱动
- 连接数据库
- 向数据库发送SQL的对象statement:进行增删改查(CRUD)
- 编写SQL(业务不同,处理不同的SQL语句)
- 执行SQL
- 关闭连接
idea实现的数据库连接实现类:
package com.yang.jdbc;
import java.sql.*;
/**
* @Author Miracle yqf
* @Version 2020
*/
public class TestJdbc {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//配置信息
String url = "jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=UTF-8";
String username = "root";
String password = "123456";
//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
String sql = "select * from users";
//5.执行查询SQL,返回一个resultSet:结果集
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();
}
}
idea数据库连接的安全模式:对象PreparedStatement,防止mysql的注入漏洞。
package com.yang.jdbc;
import java.sql.*;
/**
* @Author Miracle yqf
* @Version 2020
*/
public class TestJdbc2 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//配置信息
String url = "jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=UTF-8";
String username = "root";
String password = "123456";
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.连接数据库,代表数据库
Connection connection = DriverManager.getConnection(url, username, password);
//3.编写SQL,插入一条数据
String sql = "insert into users(id, name, password, email, birthday) VALUE (?,?,?,?,?);";
//4.预编写
PreparedStatement preparedstatement = connection.prepareStatement(sql);
preparedstatement.setInt(1,4);
preparedstatement.setString(2,"java学");
preparedstatement.setString( "2021-04-05");
//5.执行SQL
int i = preparedstatement.executeUpdate();
if (i>0){
System.out.println("插入成功!");
}
//6.关闭连接
preparedstatement.close();
connection.close();
}
}