JDBC 基础
目录
一 基础概念
二 项目的搭建
1 注册驱动
2 Connection
3 Statement
4 PreparedStatement(*)
5 ResultSet
三 基于PreparedStatement实现CRUD
查找示例:(代码实现)
插入示例:(代码实现)
一 基础概念
JDBC:javaDatabase Connectivity,意为数据库连接
JDBC是Java提供的独立于任何数据库管理系统的API.
Java提供接口规范,由各个数据库厂商提供结构的实现,厂商的实现类封装成jar文件,也就是俗称的数据库驱动jar包
二 项目的搭建
驱动jar包
MySQL :: Download MySQL Connector/J (Archived Versions)
在项目目录之下新建一个lib目录,将选定的jar包粘贴到目录下,将lib添加成
代码实现
package com.ax.base;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JDBCQuick {
public static void main(String[] args) throws Exception {
// 1 注册驱动(8.0版本之后的)
Class.forName("com.mysql.cj.jdbc.Driver");
// 2 获取连接对象
String url = "jdbc:mysql://localhost:3306/itheima";
String username = "root";
String password = "tan2179432748";
Connection connection = DriverManager.getConnection(url, username, password);
// 3 获取执行SQL语句的对象
Statement statement = connection.createStatement();
// 4 编写SQL语句,并执行,以及接收返回的结果集
String sql_1 = "select * from dept";
ResultSet resultSet = statement.executeQuery(sql_1);
//处理结果集
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println(id + " " + name);
}
//释放资源(先开后关)
statement.close();
connection.close();
resultSet.close();
System.out.println("执行成功");
}
}
核心API的详解
1 注册驱动
实现自动注册
2 Connection
3 Statement
SQL注入
4 PreparedStatement(*)
具体实现:
package com.ax.base;
import java.sql.*;
import java.util.Scanner;
public class JDBCqq {
public static void main(String[] args) throws Exception {
// 获取连接对象
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/itheima", "root", "tan2179432748");
PreparedStatement preparedStatement = connection.prepareStatement("select * from tb_user_edu where degree = ?");
System.out.println("输入查询的学历");
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
//为问号占位符赋值,并执行SQL语句,接收返回的结果集
preparedStatement.setString(1,str);
ResultSet resultSet = preparedStatement.executeQuery();
//处理结果集
while (resultSet.next()) {
int id = resultSet.getInt("id");
String degree = resultSet.getString("degree");
String major = resultSet.getString("major");
String school = resultSet.getString("primaryschool");
String university = resultSet.getString("university");
System.out.println(id + " " + degree + " " + major + " " + school + " " + university);
}
//释放资源(先开后关)
connection.close();
resultSet.close();
System.out.println("执行成功");
}
}
运行结果:
5 ResultSet
三 基于PreparedStatement实现CRUD
- 1 DriverManager.getConnection()
- 2 1->obj.prepareStatement('sql')
- 3 2->obj.set数据类型(index,"数据")
- 4 2->obj.excuteUpdate()/2->obj.excuteQuery()
- 增删改都是excuteUpdate()/查询是excuteQuery()
查找示例:(代码实现)
package com.ax.base;
import java.sql.*;
public class JDBCaa {
public static void main(String[] args) throws SQLException {
// 获取连接对象(连接到本地的itheima数据库)
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/itheima", "root", "tan2179432748");
// 创建预编译SQL对象,同时防止了SQL注入攻击,防止用户输入非法字符
PreparedStatement preparedStatement = connection.prepareStatement("select id,degree from tb_user_edu where degree = ?");
// 绑定参数将第一个占位符替换为本科
preparedStatement.setString(1, "本科");
// 执行查询并获取结果集,返回满足条件的所有记录
ResultSet resultSet = preparedStatement.executeQuery();
// 遍历结果集
while (resultSet.next()) {
int id = resultSet.getInt("id");
String degree = resultSet.getString("degree");
System.out.println(id + " " + degree);
}
// 释放资源(先开后关)
connection.close();
resultSet.close();
System.out.println("执行成功");
}
}
插入示例:(代码实现)
package com.ax.base;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class JDBCUpdate {
public static void main(String[] args) throws SQLException {
//获取连接对象(连接到本地的itheima数据库)
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/itheima", "root", "tan2179432748");
// 创建预编译SQL对象,同时防止了SQL注入攻击,防止用户输入非法字符
PreparedStatement preparedStatement = connection.prepareStatement("insert into tb_user_edu values (?,?,?,?,?,?,?)");
// 绑定参数将占位符替换为指定的参数
preparedStatement.setInt(1,5);
preparedStatement.setString(2,"大专");
preparedStatement.setString(3,"软件工程");
preparedStatement.setString(4,"安师大附属小学");
preparedStatement.setString(5,"安师大附属中学");
preparedStatement.setString(6,"安徽师范大学");
preparedStatement.setInt(7,5);
// 执行SQL语句,返回受影响的行数
int i = preparedStatement.executeUpdate();
// 判断是否添加成功
if (i>0){
System.out.println("添加成功");
}else {
System.out.println("添加失败");
}
//资源示范(先开后关)
preparedStatement.close();
connection.close();
}
}