网站建设企业公司网站制作步骤流程图
目录
一 基础概念
二 项目的搭建
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();}
}