JavaWeb预习(jdbc)

news2025/6/9 12:35:31

基础

1.驱动程序接口Driver

每种数据库都提供了数据库驱动程序,并且都提供了一个实现java.sql.Driver接口的类,称为Driver

对于MySql,其Driver类为com.mysql.jdbc.Driver,加载该类的语句为:

Class.forName("com.mysql.jdbc.Driver")

2.驱动程序管理器DriverManager

DriverManager类用来建立数据库连接

Connection getConnection(String url,String user,String password)

URL语法格式为:

jdbc:子协议:数据源

eg: 

String url = "jdbc:mysql:localhost:3306/user";
Connection con = DriverManager.getConnection(url,"root","123456");

3.数据库连接接口Connection

Java程序对数据库的操作都在该对象上进行

eg:

Statement stmt = con.createStatement();

该语句不需要SQL语句,在执行时加上SQL就行

还有PreparedStatement,直接在括号加上sql执行

4.执行SQL语句接口Statement

用来执行静态SQL语句,并返回执行结果,

executeQuery(String sql)执行select

executeUpdate(String sql)执行insert,update,delete

增加

JDBC连接数据库

<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager" %>
<%@page import="java.sql.Connection" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
	String driverName = "com.mysql.jdbc.Driver";
	String userName = "root";
	String userPwd = "1234";
	String dbName = "students";
	String url1 = "jdbc:mysql://localhost:3306/"+dbName;
	String url2 = "?user="+userName+"&password="+userPwd;
	String url3 = "&useUnicode=true&characterEncoding=UTF-8";
	String url = url1+url2+url3;
	Class.forName(driverName);
	Connection conn = DriverManager.getConnection(url);
	
	String sql = "Insert into stu_info(id,name,sex,age,weight,hight) values(?,?,?,?,?,?)";
	PreparedStatement pstmt = conn.prepareStatement(sql);
	pstmt.setInt(1,16);
	pstmt.setString(2,"张三");
	pstmt.setString(3,"男");
	pstmt.setInt(4,20);
	pstmt.setFloat(5,70);
	pstmt.setFloat(6,175);
	int n = pstmt.executeUpdate();
	if(n == 1){%> 数据插入成功<br> <%}
	else{%> 数据插入失败<br><%}
	if(pstmt != null){pstmt.close();}
	if(conn != null){conn.close();}
	%>
</body>
</html>

<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
	String driverName = "com.mysql.jdbc.Driver";
	String dbName = "students";
	String userName = "root";
	String userPwd = "1234";
	String url1 = "jdbc:mysql://localhost:3306/"+dbName;
	String url2 = "?user="+userName+"&password="+userPwd;
	String url3 = "&useUnicode=true&characterEncoding=UTF-8";
	String url = url1+url2+url3;
	Class.forName(driverName);
	Connection conn = DriverManager.getConnection(url);
	
	String sql = "Insert into stu_info(id,name,sex,age,weight,hight) values(17,'王五','男',21,80,170)";
	PreparedStatement pstmt = conn.prepareStatement(sql);
	pstmt.executeUpdate();
	
	
	
	%>
</body>
</html>

实例:

1.表单: 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>添加学生</title>
</head>
<body>
	<form action="sjk.jsp" method="post">
		<table>
			<tr>
				<td>学号</td>
				<td><input type="text" name="id"></td>
			</tr>
			<tr>
				<td>姓名</td>
				<td><input type="text" name="name"></td>
			</tr>
			<tr>
				<td>性别</td>
				<td><input type="text" name="sex"></td>
			</tr>
			<tr>
				<td>年龄</td>
				<td><input type="text" name="age"></td>
			</tr>
			<tr>
				<td>体重</td>
				<td><input type="text" name="weight"></td>
			</tr>
			<tr>
				<td>身高</td>
				<td><input type="text" name="hight"></td>
			</tr>
			<tr>
				<td colspan="2" align="center">
					<input type="submit" value="提交">&nbsp;
					<input type="reset" value="取消">
				</td>
			</tr>
		
		</table>
	</form>	
</body>
</html>

2.连接数据库:


<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
	String driverName = "com.mysql.jdbc.Driver";
	String dbName = "students";
	String userName = "root";
	String userPwd = "1234";
	String url1 = "jdbc:mysql://localhost:3306/"+dbName;
	String url2 = "?user="+userName+"&password="+userPwd;
	String url3 = "&useUnicode=true&characterEncoding=UTF-8";
	String url = url1+url2+url3;
	Class.forName(driverName);
	Connection conn = DriverManager.getConnection(url);
	
	String sql = "Insert into stu_info(id,name,sex,age,weight,hight) values(?,?,?,?,?,?)";
	PreparedStatement pstmt = conn.prepareStatement(sql);
	
	request.setCharacterEncoding("UTF-8");
	int id = Integer.parseInt(request.getParameter("id"));
	String name = request.getParameter("name");
	String sex = request.getParameter("sex");
	int age = Integer.parseInt(request.getParameter("age"));
	float weight = Float.parseFloat(request.getParameter("weight"));
	float hight = Float.parseFloat(request.getParameter("hight"));
	
	pstmt.setInt(1,id);
	pstmt.setString(2,name);
	pstmt.setString(3,sex);
	pstmt.setInt(4,age);
	pstmt.setFloat(5,weight);
	pstmt.setFloat(6,hight);
	
	try{
		int n = pstmt.executeUpdate();
		if(n==1){%>
			数据插入成功<br><%
		}else {
			%>数据插入失败<br><%
		}
	}catch(Exception e){%>
		更新过程出现异常错误!<br>
		<%=e.getMessage() %>
		<%
	}
	
	%>
</body>
</html>

3.回显

<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学生数据表</title>
</head>
<body>
    <%
    String driverName = "com.mysql.jdbc.Driver";
    String userName = "root";
    String userPwd = "1234";
    String dbName = "students";
    String url1 = "jdbc:mysql://localhost:3306/" + dbName;
    String url2 = "?user=" + userName + "&password=" + userPwd;
    String url3 = "&useUnicode=true&characterEncoding=UTF-8";
    String url = url1 + url2 + url3;
    
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    
    try {
        Class.forName(driverName);
        conn = DriverManager.getConnection(url);
        
        // 创建可滚动的 PreparedStatement
        String sql = "select * from stu_info";
        pstmt = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
        rs = pstmt.executeQuery();
        
        // 获取记录总数
        rs.last();
        int totalRows = rs.getRow();
    %>
    你要查询的学生数据表中共有
    <%= totalRows %> 人
    <center>
    <table border="1">
        <tr>
            <td>记录条数</td>
            <td>学号</td>
            <td>姓名</td>
            <td>性别</td>
            <td>年龄</td>
            <td>体重</td>
            <td>身高</td>
        </tr>
        <%
        // 将光标移动到结果集的开始位置
        rs.beforeFirst(); 
        while(rs.next()){%>
        <tr>
            <td><%= rs.getRow() %></td>
            <td><%= rs.getString("id") %></td>
            <td><%= rs.getString("name") %></td>
            <td><%= rs.getString("sex") %></td>
            <td><%= rs.getString("age") %></td>
            <td><%= rs.getString("weight") %></td>
            <td><%= rs.getString("hight") %></td>
        </tr>
        <%}%>
    </table></center>
    <%
    } catch (Exception e) {
        e.printStackTrace();
    %>
    <p style="color:red">发生错误: <%= e.getMessage() %></p>
    <%
    } finally {
        // 确保资源被关闭
        try {
            if (rs != null) rs.close();
            if (pstmt != null) pstmt.close();
            if (conn != null) conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    } // 确保 finally 块正确闭合
    %>
</body>
</html>

4.带条件的回显

<%@page contentType="text/html" pageEncoding="UTF-8" import="java.sql.*"%>
<html>
    <head>
    <title>查询满足条件的学生页面</title> 
    
    <style>
    .style1 {
    	border-collapse: collapse;
    	border-spacing: 0px;
    }
    </style>
    </head>
    <body>

		<%
		String dbName = "students";
		String driverName = "com.mysql.jdbc.Driver";
		String userName = "root";
		String userPwd = "1234";
		String url1 = "jdbc:mysql://localhost:3306/"+dbName;
		String url2 = "?user="+userName+"&password="+userPwd;
		String url3 = "&useUnicode=true&characterEncoding=UTF-8";
		String url = url1+url2+url3;
		
		Class.forName(driverName);
		Connection conn = DriverManager.getConnection(url);
		
		String sql = "select * from stu_info where weight>=? and weight<=?";
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
		pstmt.setFloat(1, 60);
		pstmt.setFloat(2,80);
		
		rs = pstmt.executeQuery();
		rs.last();
		%>
		共有<%=rs.getRow() %>人
		<center>
		<table border="1" class="style1">
			<tr>
				<td>记录条数</td>
				<td>学号</td>
				<td>姓名</td>
				<td>性别</td>
				<td>年龄</td>
				<td>身高</td>
				<td>体重</td>
			</tr>
			
		<%
		rs.beforeFirst();
		while(rs.next()){%>
			<tr>
				<td><%=rs.getRow() %></td>
				<td><%=rs.getString("id") %></td>
				<td><%=rs.getString("name") %></td>
				<td><%=rs.getString("sex") %></td>
				<td><%=rs.getString("age") %></td>
				<td><%=rs.getString("hight") %></td>
				<td><%=rs.getString("weight") %></td>
			</tr>
		<%}%>
		</table>
		</center>
		<%
		if(rs!=null){rs.close();}
		if(conn!=null){conn.close();}
		if(pstmt!=null){pstmt.close();}
		%>
     
    </body>
</html>

5.加客户端的条件查询

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>条件查询页面</title>

<style>
.css1 {
	width: 40px;
}
</style>
</head>
<body>
	<form action="huixian2.jsp" method="post">
		性别:男<input type="radio" value="男" name="sex" checked="checked"> 女<input type="radio" value="女" name="sex">
		<br>
		体重范围:最小<input type="text" name="w1" class="css1"> &nbsp;&nbsp;最大<input type="text" name="w2" class="css1">
		<br>
		<input type="submit" value="提交">&nbsp;&nbsp;<input type="reset" value="取消">



	</form>
</body>
</html>
<%@page contentType="text/html" pageEncoding="UTF-8" import="java.sql.*"%>
<html>
    <head>
    <title>查询满足条件的学生页面</title> 
    
    <style>
    .style1 {
    	border-collapse: collapse;
    	border-spacing: 0px;
    }
    </style>
    </head>
    <body>

		<%
		String dbName = "students";
		String driverName = "com.mysql.jdbc.Driver";
		String userName = "root";
		String userPwd = "1234";
		String url1 = "jdbc:mysql://localhost:3306/"+dbName;
		String url2 = "?user="+userName+"&password="+userPwd;
		String url3 = "&useUnicode=true&characterEncoding=UTF-8";
		String url = url1+url2+url3;
		
		Class.forName(driverName);
		Connection conn = DriverManager.getConnection(url);
		
		String sql = "select * from stu_info where sex=? and weight>=? and weight<=?";
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
		request.setCharacterEncoding("UTF-8");
		
		pstmt.setString(1,request.getParameter("sex"));
		pstmt.setFloat(2,Float.parseFloat(request.getParameter("w1")));
		pstmt.setFloat(3,Float.parseFloat(request.getParameter("w2")));
		
		rs = pstmt.executeQuery();
		rs.last();
		%>
		共有<%=rs.getRow() %>人
		<center>
		<table border="1" class="style1">
			<tr>
				<td>记录条数</td>
				<td>学号</td>
				<td>姓名</td>
				<td>性别</td>
				<td>年龄</td>
				<td>身高</td>
				<td>体重</td>
			</tr>
			
		<%
		rs.beforeFirst();
		while(rs.next()){%>
			<tr>
				<td><%=rs.getRow() %></td>
				<td><%=rs.getString("id") %></td>
				<td><%=rs.getString("name") %></td>
				<td><%=rs.getString("sex") %></td>
				<td><%=rs.getString("age") %></td>
				<td><%=rs.getString("hight") %></td>
				<td><%=rs.getString("weight") %></td>
			</tr>
		<%}%>
		</table>
		</center>
		<%
		if(rs!=null){rs.close();}
		if(conn!=null){conn.close();}
		if(pstmt!=null){pstmt.close();}
		%>
     
    </body>
</html>

删除

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.sql.*"%>
<!DOCTYPE html> 
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
	request.setCharacterEncoding("UTF-8");
	String driverName = "com.mysql.jdbc.Driver";
	String dbName = "students";
	String userName = "root";
	String userPwd = "1234";
	String url1 = "jdbc:mysql://localhost:3306/"+dbName;
	String url2 = "?user="+userName+"&password="+userPwd;
	String url3 = "&useUnicode=true&characterEncoding=UTF-8";	
	String url = url1+url2+url3;
	
	Class.forName(driverName);
	Connection conn = DriverManager.getConnection(url);
	
	String sql = "Delete from stu_info where name = ?";
	PreparedStatement pstmt = conn.prepareStatement(sql);
	
	pstmt.setString(1, request.getParameter("name"));
	
	try{ 
        int n= pstmt.executeUpdate();
        if(n>=1){%>
            数据删除操作成功!<br>
        <%}
        else{%>
           数据删除操作失败!<br>
        <%} 
   }catch(Exception e){%>
         删除更新过程出现异常错误!<br>
         <%=e.getMessage()%>
   <%            
   }

	if(conn!=null){
		conn.close();
	}
	if(pstmt!=null){
		pstmt.close();
	}
	
	
	
	%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<form action="delete.jsp" method="post">
请输入要删除数据的姓名:
<input type="text" name="name"><br>
<input type="submit" value="提交">
</form>

</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2405363.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web3 借贷与清算机制全解析:链上金融的运行逻辑

Web3 借贷与清算机制全解析&#xff1a;链上金融的运行逻辑 超额抵押借款 例如&#xff0c;借款人用ETH为抵押借入DAI&#xff1b;借款人的ETH的价值一定是要超过DAI的价值&#xff1b;借款人可以任意自由的使用自己借出的DAI 稳定币 第一步&#xff1a;借款人需要去提供一定…

【Vue3】(三)vue3中的pinia状态管理、组件通信

目录 一、vue3的pinia 二、【props】传参 三、【自定义事件】传参 四、【mitt】传参 五、【v-model】传参&#xff08;平常基本不写&#xff09; 六、【$attrs】传参 七、【$refs和$parent】传参 八、provide和inject 一、vue3的pinia 1、什么是pinia&#xff1f; pinia …

Jenkins自动化部署Maven项目

Jenkins自动化部署Maven项目 一、环境准备(Prerequisites) SpringBoot项目 确保项目根目录有标准Maven结构(pom.xml)且包含Dockerfile: # Dockerfile 示例 FROM openjdk:11-jre-slim VOLUME /tmp ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["j…

LeetCode 高频 SQL 50 题(基础版)之 【高级字符串函数 / 正则表达式 / 子句】· 上

题目&#xff1a;1667. 修复表中的名字 题解&#xff1a; select user_id, concat(upper(left(name,1)),lower(right(name,length(name)-1))) name from Users order by user_id题目&#xff1a;1527. 患某种疾病的患者 题解&#xff1a; select * from Patients where con…

Python 中 Django 中间件:原理、方法与实战应用

在 Python 的 Web 开发领域&#xff0c;Django 框架凭借其高效、便捷和功能丰富的特点备受开发者青睐。而 Django 中间件作为 Django 框架的重要组成部分&#xff0c;犹如 Web 应用的 “交通枢纽”&#xff0c;能够在请求与响应的处理流程中&#xff0c;实现对请求和响应的拦截…

深入浅出玩转物联网时间同步:基于BC260Y的NTP实验与嵌入式仿真教学革命

在万物互联的时代&#xff0c;精准的时间戳是物联网系统的神经节拍器&#xff0c;而NTP协议正是维持这一节律的核心技术。 一、时间同步&#xff1a;物联网世界的隐形基石 在智慧城市、工业4.0等场景中&#xff0c;分散的设备需要毫秒级的时间协同。网络时间协议&#xff08;N…

【在线五子棋对战】二、websocket 服务器搭建

文章目录 Ⅰ. WebSocket1、简介2、特点3、原理解析4、报文格式 Ⅱ. WebSocketpp1、认识2、常用接口3、websocketpp库搭建服务器搭建流程主体框架填充回调函数细节 4、编写 makefile 文件5、websocket客户端 Ⅰ. WebSocket 1、简介 WebSocket 是从 HTML5 开始支持的一种网页端…

C++课设:从零开始打造影院订票系统

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 专栏介绍&#xff1a;《编程项目实战》 目录 一、项目背景与需求分析二、系统架构设计…

【计算机网络】数据链路层-滑动窗口协议

数据链路层滑动窗口协议 1. 三种协议对比表 特性停止-等待协议GBN协议SR协议窗口大小发送 1&#xff0c;接收 1发送 W (1<W≤2ⁿ-1)&#xff0c;接收 1发送 C&#xff0c;接收 R确认方式单个确认累积确认选择性确认重传策略超时重传回退N帧重传选择性重传接收缓冲区…

在linux系统上,如何安装Elasticsearch?

1.问题描述 当尝试连接时报错&#xff0c;报错内容为&#xff1a; elastic_transport.ConnectionError: Connection error caused by: ConnectionError(Connection error caused by: NewConnectionError(<urllib3.connection.HTTPConnection object at 0x7fd808b179d0>:…

wpf Behaviors库实现支持多选操作进行后台绑定数据的ListView

<ListView ItemsSource"{Binding SchemeItems}" SelectionMode"Extended" VerticalAlignment"Stretch" HorizontalAlignment"Stretch"><ListView.ContextMenu><ContextMenu><MenuItem Header"删除" …

《Vuejs设计与实现》第 8 章(挂载与更新)

目录 8.1 挂载子节点与属性 8.2 HTML Attributes 与 DOM Properties 8.3 设置元素属性的正确方式 8.4 处理 class 属性 8.5 卸载操作 8.6 区分 vnode 类型 8.7 事件处理优化 8.8 事件冒泡与更新时机问题 8.9 子节点的更新 8.10 文本节点和注释节点 8.11 片段&#xf…

Ubuntu20.04中 Redis 的安装和配置

Ubuntu20.04 中 Redis 的安装和配置 Ubuntu 安装 MySQL 及其配置 1. Redis 的安装 更新系统包列表并安装 Redis &#xff1a; # 更新包管理工具 sudo apt update# -y&#xff1a;自动确认所有提示&#xff08;非交互式安装&#xff09; sudo apt install -y redis-server测…

实验四:图像灰度处理

实验四 图像处理实验报告 目录 实验目的实验内容 原理描述Verilog HDL设计源代码Testbench仿真代码及仿真结果XDC文件配置下板测试 实验体会实验照片 实验目的 在实验三的基础上&#xff0c;将图片显示在显示器上&#xff0c;并进行灰度处理。 实验内容 原理描述 1. 图片的…

解析“与此站点的连接不安全”警告:成因与应对策略

一、技术本质&#xff1a;SSL/TLS协议的信任链断裂 现代浏览器通过SSL/TLS协议建立加密通信&#xff0c;其核心在于证书颁发机构&#xff08;CA&#xff09;构建的信任链。当用户访问网站时&#xff0c;浏览器会验证服务器证书的有效性&#xff0c;包括&#xff1a; 证书链完…

⚡️ Linux Docker 基本命令参数详解

&#x1f433; Linux Docker 基本命令参数详解 &#x1f4d8; 1. Docker 简介 Docker 是一个开源的容器化平台&#xff0c;它通过将应用及其依赖打包到一个轻量级、可移植的容器中&#xff0c;从而实现跨平台运行。Docker 采用 C/S 架构&#xff0c;服务端称为 Docker Daemon&a…

做题笔记(ctfshow)

一。ctfshow web13 文件扫描 存在upload.php.bak <?php header("content-type:text/html;charsetutf-8");$filename $_FILES[file][name];$temp_name $_FILES[file][tmp_name];$size $_FILES[file][size];$error $_FILES[file][error];$arr pathinfo($fi…

Agent短期记忆的几种持久化存储方式

今天给大家讲一下关于Agent长期对话的几种持久化存储方式&#xff0c;之前的文章给大家说过短期记忆和长期记忆&#xff0c;短期记忆基于InMemorySaver做checkpointer&#xff08;检查点&#xff09;&#xff0c;短期记忆 &#xff08;线程级持久性&#xff09; 使代理能够跟踪…

Git 常见操作

目录 1.git stash 2.合并多个commit 3. git commit -amend (后悔药) 4.版本回退 5.merge和rebase 6.cherry pick 7.分支 8.alias 1.git stash git-stash操作_git stash 怎么增加更改内容-CSDN博客 2.合并多个commit 通过git bash工具交互式操作。 1.查询commit的c…

从 ClickHouse、Druid、Kylin 到 Doris:网易云音乐 PB 级实时分析平台降本增效

网易云音乐基于 Apache Doris 替换了早期架构中 Kylin、Druid、Clickhouse、Elasticsearch、HBase 等引擎&#xff0c;统一了实时分析架构&#xff0c;并广泛应用于广告实时数仓、日志平台和会员报表分析等典型场景中&#xff0c;带来导入性能提升 3&#xff5e;30 倍&#xff…