jdbc从入门到精通详解

1.JDBC简介

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

2.JDBC快速入门

2.1jdbc创建基本步骤

在这里插入图片描述

2.2 jdbc快速入门案例

1.先准备一个数据库,表名为db1

在这里插入图片描述


然后再idea里面去写jdbc去修改,id=1时候的password值

package com.xiaowang.jdbc;

import javax.swing.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

/**
 * @Author 小王
 * @DATE: 2022/5/6
 */
//jdbc快速入门
public class JDBCDemo {
    public static void main(String[] args) throws Exception {
        //1.注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        //2.获取连接
        String url ="jdbc:mysql://127.0.0.1:3306/db1?serverTimezone=UTC";
        String username ="   ";//这里要填自己的数据库名
        String password ="   *";//填自己的数据库密码
        Connection conn = DriverManager.getConnection(url, username, password);
        //3.定义sql语句
        String sql =" UPDATE db1 SET userpassword = 123456abc WHERE id =1";
        //4.获取执行sql语句的对象 Statement对象获取
        Statement stmt = conn.createStatement();
        //5.执行sql语句对象,记录sql执行结果行数
        int i = stmt.executeUpdate(sql);//受影响行数
        //6.处理结果,这里用输出行数就行吧
        System.out.println("受影响行数:"+i);
        //7.释放资源,要按照顺序
        stmt.close();
        conn.close();
    }
}

特别注意:
String url =" “; //填自己的表明
String username =” “;//这里要填自己的数据库名
String password =” *";//填自己的数据库密码

然后我们会发现,数据库内容发生改变:

在这里插入图片描述


在这里插入图片描述

3.JDBC API详解

3.1 DriverManager

3.1.1 DriverManager 基本介绍

在这里插入图片描述


常用方法:

在这里插入图片描述


在这里插入图片描述

3.1.2 DriverManager注册驱动

在这里插入图片描述

平时的驱动注册我们都是用:

在这里插入图片描述


通过查看源码,其实底层还是Driver

在这里插入图片描述


其实我们导入的8后面的jar包中有了驱动的注册,所以,1.8后面的API是不用再手动写驱动注册程序的

3.1.3 DriverManager连接数据库

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

3.2 Connection

3.2.1 Connection连接数据库

在这里插入图片描述

3.2.2 Connection事务管理

在这里插入图片描述


案例演示:

package com.xiaowang.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * @Author 小王
 * @DATE: 2022/5/6
 */
//事务详解
public class JDBCDemo3Connection {
    public static void main(String[] args) throws Exception {
        //1.注册驱动
        //Class.forName("com.mysql.cj.jdbc.Driver");
        //2.获取连接
        String url ="jdbc:mysql:///db1?serverTimezone=UTC";
        String username ="    ";
        String password ="   ";
        Connection conn = DriverManager.getConnection(url, username, password);
        //3.定义sql语句
        String sql1 =" UPDATE db1 SET userpassword = 123456111 WHERE id =1";
        String sql2 =" UPDATE db1 SET username = 12345 WHERE id =2";
        //4.获取执行sql语句的对象 Statement对象获取
        Statement stmt = conn.createStatement();

        try {
        //开启事务
        conn.setAutoCommit(false);//手动开启事务
        //使用异常去执行事务的回滚
        //5.执行sql语句对象,记录sql执行结果行数
            int i = stmt.executeUpdate(sql1);//受影响行数
            //6.处理结果,这里用输出行数就行吧
            System.out.println("受影响行数:"+i);
            //5.执行sql语句对象,记录sql执行结果行数
            int i1 = stmt.executeUpdate(sql2);//受影响行数
            //6.处理结果,这里用输出行数就行吧
            System.out.println("受影响行数:"+i1);
            //提交事务
            conn.commit();
        } catch (Exception throwables) {
            //回滚事务
            conn.rollback();
            throwables.printStackTrace();
        }

        //7.释放资源,要按照顺序
        stmt.close();
        conn.close();
    }
}

在这里插入图片描述

修改前:

修改后:

在这里插入图片描述

3.3 Statement(含SQL)

在这里插入图片描述

数据定义语言(Data Definition Language, DDL):
用于管理和定义数据对象,包括数据库,数据表等

		- create: 创建数据库和表
		- 语法格式: creat database if not exists 数据库名称 character set = 编码名称; 
		- 例:
		- - create database ruochen;
		- create database if not exists ruochen;  // 忽视错误,显示警告
		- -----------------------------------------------------------------------------------
		- drop: 删除表对象
		- 语法格式:
		- drop database 数据库名称;
		- 例如:
		- drop database ruochen;  // 删除数据库
		- ---------------------------------------------------------------------------------
		- alter: 修改表结构
		- 语法格式: alter database if not exists 数据库名称 character set 新的编码名称
		- 例如:
		- alter database db character set = utf8;

数据操作语言(Data Manipulation Language, DML):
用于操作数据库对象中所包含的数据

		- insert: 添加数据
		- 语法格式:
		- insert into 表名 (列名1,列名2,....) values|value (数值1|表达式,数值2|表达式,....);
		- 例:
		- insert into teacher (id, name) values ('1', 'xian zheng ta yi ge yi');
		- insert into teacher value(2, '
		- wangjianlin', 'xian zheng ta yi ge yi');  // 如果前面不指定字段,默认采用所有字段,按照列的顺序添加
		- ---------------------------------------------------------------------------------------------------
		- delete: 删除数据
		- 语法格式:
		- delete from 表名 where 条件;
		- 例:
		- delete from teacher where id=1;  // 指定条件删除记录
		- delete from teacher;  // 不带条件删除,删除所有记录
		- 扩充:
		- truncate table 表名;  // 清空表,会清空表中所有数据
		- 例如
		- truncate table teacher;
		- 
		- 面试题:
		- delete删除与truncate 有什么区别?
			- 删除方式
				- delete:一条一条的删除,不清空 auto_increment 记录数
				- truncate:直接将表中的数据进行清空, auto_increment 自增将被重置,从新开始
	 ---------------------------------------------------------------------------------------------------
		- update: 修改数据
		- 语法格式:
		- update 表名 set 列名1=数值,列名2=数值,.... where 条件;
		- 例如:
			- update teacher set name='xiaosan',note='ming nian zai zhao yi ge' where id=1;  // 带条件修改,修改指定记录
			- update teacher set name='xiaosi';  // 不带条件,修改表中所有数据

3. DQL(Data Query Language,数据查询语言)
  主要用于查询数据库当中的数据

.代表指令:
select 查询表中的数据
from 查询哪张表、视图
where 约束条件

3.3 ResultSet

在这里插入图片描述


简单案例分析:

package com.xiaowang.jdbc;

import java.sql.*;

/**
 * @Author 小王
 * @DATE: 2022/5/6
 */
public class JDBCDemo5ResultSet {
    public static void main(String[] args) throws Exception {
        //2.获取连接
        String url ="jdbc:mysql:///db1?serverTimezone=UTC";
        String username ="root";
        String password ="949zghzj*";
        Connection conn = DriverManager.getConnection(url, username, password);
        //3.定义sql
        String sql = "select * from db1";
        //4.获取对象
        Statement statement = conn.createStatement();
        //5.执行对象
        ResultSet resultSet = statement.executeQuery(sql);
        //遍历查询一遍数据,使用next()游标
        /*while (resultSet.next()){
            //获取数据,根据行来一条条获取
            int anInt = resultSet.getInt(1);
            String name = resultSet.getString(2);
            String word = resultSet.getString(3);

            System.out.println(anInt);
            System.out.println(name);
            System.out.println(word);
            System.out.println("=========");
        }*/

        while (resultSet.next()){
            //获取数据,根据列名来一条条获取
            int anInt = resultSet.getInt("id");
            String name = resultSet.getString("username");
            String word = resultSet.getString("userpassword");

            System.out.println(anInt);
            System.out.println(name);
            System.out.println(word);
            System.out.println("=========");
        }
        resultSet.close();
        statement.close();
        conn.close();
    }
}

ResultSet案例:
题目:查询db1数据表的信息,封装到User对象中,然后储存到集合中
分析:

/*
package com.xiaowang.jdbc;

import java.sql.*;

*/
/**
 * @Author 小王
 * @DATE: 2022/5/6
 *//*

public class JDBCDemo5ResultSet {
    public static void main(String[] args) throws Exception {
        //2.获取连接
        String url ="jdbc:mysql:///db1?serverTimezone=UTC";
        String username ="root";
        String password ="949zghzj*";
        Connection conn = DriverManager.getConnection(url, username, password);
        //3.定义sql
        String sql = "select * from db1";
        //4.获取对象
        Statement statement = conn.createStatement();
        //5.执行对象
        ResultSet resultSet = statement.executeQuery(sql);
        //遍历查询一遍数据,使用next()游标
        

        while (resultSet.next()){
            //获取数据,根据列名来一条条获取
            int anInt = resultSet.getInt("id");
            String name = resultSet.getString("username");
            String word = resultSet.getString("userpassword");

            System.out.println(anInt);
            System.out.println(name);
            System.out.println(word);
            System.out.println("=========");
        }
        resultSet.close();
        statement.close();
        conn.close();
    }
}
*/
package com.xiaowang.jdbc;

import java.sql.*;
import java.util.*;

/**
 * @Author 小王
 * @DATE: 2022/5/6
 */
public class JDBCDemo5ResultSet {
    public static void main(String[] args) throws Exception {
        //2.获取连接
        String url ="jdbc:mysql:///db1?serverTimezone=UTC";
        String username ="root";
        String password ="949zghzj*";
        Connection conn = DriverManager.getConnection(url, username, password);
        //3.定义sql
        String sql = "select * from db1";
        //4.获取对象
        Statement statement = conn.createStatement();
        //5.执行对象
        ResultSet resultSet = statement.executeQuery(sql);
        //遍历查询一遍数据,使用next()游标

        //需求:讲数据库中的信息,存放到一个对象集合中去
        //写一个集合list去存放对象
        List list = new ArrayList();
        while (resultSet.next()){
            //创建一个和user对象,来接收查询后的值
            User user = new User();
            //获取数据,根据列名来一条条获取
            int anInt = resultSet.getInt("id");
            String name = resultSet.getString("username");
            String word = resultSet.getString("userpassword");
            //讲数据存放到对象中
            user.setId(anInt);
            user.setUsername(name);
            user.setPassword(word);
            //将对象存放到list集合中
            list.add(user);
        }
        System.out.println(list);//输出看一下list里面的信息
        resultSet.close();
        statement.close();
        conn.close();
    }
}

3.4 PreparedStatement

在这里插入图片描述

3.4.1 注入原因以及防御

产生注入的原因:

在这里插入图片描述


解决注入方案:

在这里插入图片描述


传递逻辑:

在这里插入图片描述

3.4.1 PreparedStatement原理

在这里插入图片描述


如果要使用预编译的话;

在这里插入图片描述


使用预编译和不使用的区别:

在这里插入图片描述


小结:

在这里插入图片描述


案例:

package jdbc;

import java.sql.*;
import java.util.ArrayList;

/**
 * @Author:小王吖
 * @Date:2022/8/23
 */
public class JDBCDemo {
    public static void main(String[] args) throws Exception {
        //1.注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.获取连接(jdbc:mysql://ip:端口号/数据库名)这里要是用本机的,可以省区ip和端口号
        String url = "jdbc:mysql://localhost:3306/zlt?useSSL=false&characterEncoding=utf-8&useServerPrepStmts=true";
        String user = "root";
        String password ="949zghzj*";
        Connection connection = DriverManager.getConnection(url,user,password);
        //3.定义sql语句
        String sql = "insert into db1(id,username,userpassword) values (?,?,?)";
        //4.获取执行sql语句的对象 Statement对象获取
        PreparedStatement pst = connection.prepareStatement(sql);
        //5.执行sql语句对象,记录sql执行结果行数
        pst.setInt(1,3);
        pst.setString(2,"啦啦");
        pst.setString(3,"123321123");
        int i = pst.executeUpdate();
        System.out.println("受影响行数"+i);
        //7.释放资源,要按照顺序
        pst.close();
        connection.close();
    }
}

4.数据库连接池

4.1 数据库连接池基本介绍

在这里插入图片描述


通俗理解:

在这里插入图片描述


好处:

在这里插入图片描述


在这里插入图片描述

4.2 Driud连接池

使用步骤:

在这里插入图片描述


案例分析:
加载文件配置:

在这里插入图片描述

整个连接步骤:

package com.xiaowang.druid_;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.util.Map;
import java.util.Properties;

/**
 * @Author 小王
 * @DATE: 2022/5/6
 */
//Druid数据库连接池演示
public class DruidDemo {
    public static void main(String[] args) throws Exception {
        //1.导入jar包

        //2.定义配置文件

        //3.加载配置文件(根据自己的文件来配置,主4)
        Properties prop = new Properties();//根据4去创建配置文件的对象
        //需要使用 FileInputStream 去加载配置文件,里面从传入配置文件的路径即可
        prop.load(new FileInputStream("jdbc-demo/src/druid.properties"));

        //4.获取连接池对象,使用DruidDataSourceFactory工场去创建连接对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);

        //5.获取数据库连接 connection
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        
        //System.out.println(System.getProperty("user.dir"));
        //因为我们再加载路径的时候可能会因为模块啥的出错,为了直接获取到正确路径,我们可以显式的输出下当前文件的路径,
        // 然后加在路径前面,写全即可
    }
}

注意:
prop.load(new FileInputStream(“jdbc-demo/src/druid.properties”));

在这里写加载文件路径的时候,经常因为要不要模板名啥的报错,为了方便我们可以直接先注释掉所有代码,去显式的输出一下我们的路径,然后再写进路径里面:

System.out.println(System.getProperty(“user.dir”));

5.JDBC练习题

完成一个商品品牌的增删改查操作:
准备:
一个名为tb_brand 的数据表:

在这里插入图片描述

然后进行增删查改操作:

全部写在一起了 直接把注释打开就ok了

package com.xiaowang.example;

import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.xiaowang.pojo.Brand;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.sql.*;
import java.util.*;
import java.util.Properties;

/**
 * @Author 小王
 * @DATE: 2022/5/7
 */
//数据的增删改查
public class BrandTest {
    public static void main(String[] args) throws Exception {

    //查询所有:SQL:select * from tb_brand;
    //参数:并不需要
    //结果:用list去封装
        //1.获取连接对象
        // 1.导入jar包
        //2.定义配置文件
        //3.加载配置文件(根据自己的文件来配置,主4)
        Properties prop = new Properties();//根据4去创建配置文件的对象
        //需要使用 FileInputStream 去加载配置文件,里面从传入配置文件的路径即可
        prop.load(new FileInputStream("jdbc-demo/src/druid.properties"));
        //4.获取连接池对象,使用DruidDataSourceFactory工场去创建连接对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        //5.获取数据库连接 connection
        Connection connection = dataSource.getConnection();
        //6.定义数据库语句
        String sql = "select * from tb_brand;";//查询所有
    //    String sql ="INSERT INTO tb_brand (brand_name, company_name, ordered, description, STATUS)VALUES(?,?,?,?,?)";
        //7.获取对象
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        //8.传入参数:
        // preparedStatement.setString();,因为这个查询全部,没有参数就可以不用
        //9.执行结果,用executeQuery()查看
        ResultSet resultSet = preparedStatement.executeQuery();
        //10.因为要用对象来封装那么就用list集合来
        Brand brand = null;//定义brand对象去存放数据
        List<Brand> brands = new ArrayList<>();//集合存放
        //11.用.next()方法来遍历查看
        while (resultSet.next()){
            //先获取数据
            int id = resultSet.getInt("id");
            String brandName = resultSet.getString("brand_name");
            String companyName = resultSet.getString("company_name");
            int ordered = resultSet.getInt("ordered");
            String description = resultSet.getString("description");
            int status = resultSet.getInt("status");
            //封装数据
            brand = new Brand();//来一组数据,咱们就new一个对象来接收
            brand.setId(id);
            brand.setBrandName(brandName);
            brand.setCompanyName(companyName);
            brand.setOrdered(ordered);
            brand.setDescription(description);
            brand.setSTATUS(status);
            //装载集合
            brands.add(brand);
        }
        System.out.println(brands);
        //11.释放资源
        resultSet.close();
        preparedStatement.close();
        connection.close();
    }

/*

        //添加:SQL: INSERT INTO tb_brand (brand_name, company_name, ordered, description, STATUS)VALUES(?,?,?,?,?);
        //参数:id是自增长的,就不用设参数了
        //结果:返回一个boolean,去提示是否添加成功

        //写死参数:
        String brandName = "香飘飘";
        String companyName ="香飘飘";
        int ordered = 4;
        String description ="绕地球八十圈";
        int status =1;
        //1.获取连接对象
        // 1.导入jar包
        //2.定义配置文件
        //3.加载配置文件(根据自己的文件来配置,主4)
        Properties prop = new Properties();//根据4去创建配置文件的对象
        //需要使用 FileInputStream 去加载配置文件,里面从传入配置文件的路径即可
        prop.load(new FileInputStream("jdbc-demo/src/druid.properties"));
        //4.获取连接池对象,使用DruidDataSourceFactory工场去创建连接对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        //5.获取数据库连接 connection
        Connection connection = dataSource.getConnection();
        //6.定义数据库语句
        String sql = "INSERT INTO tb_brand (brand_name, company_name, ordered, description, STATUS)VALUES(?,?,?,?,?);";//查询所有
        //    String sql ="INSERT INTO tb_brand (brand_name, company_name, ordered, description, STATUS)VALUES(?,?,?,?,?)";
        //7.获取对象
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        //8.传入参数:
        preparedStatement.setString(1,brandName);
        preparedStatement.setString(2,companyName);
        preparedStatement.setInt(3,ordered);
        preparedStatement.setString(4,description);
        preparedStatement.setInt(5,status);
        //9.执行结果,用executeUpdate()查看,记录执行条数就行
        int count = preparedStatement.executeUpdate();
        System.out.println(count>0);
        //11.释放资源
        preparedStatement.close();
        connection.close();
    }
*/

/*

        //修改:UPDATE tb_brand SET(brand_name=?, company_name=?, ordered=?, description=?, STATUS=?) WHERE id=?;
        //参数:根据需要去修改写
        //结果:返回一个boolean,去提示是否修改成功

        //写死参数:
        int id = 8;
        String brandName = "香飘飘";
        String companyName ="香飘飘";
        int ordered = 10;
        String description ="绕地球八十圈";
        int status =0;
        //1.获取连接对象
        // 1.导入jar包
        //2.定义配置文件
        //3.加载配置文件(根据自己的文件来配置,主4)
        Properties prop = new Properties();//根据4去创建配置文件的对象
        //需要使用 FileInputStream 去加载配置文件,里面从传入配置文件的路径即可
        prop.load(new FileInputStream("jdbc-demo/src/druid.properties"));
        //4.获取连接池对象,使用DruidDataSourceFactory工场去创建连接对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        //5.获取数据库连接 connection
        Connection connection = dataSource.getConnection();
        //6.定义数据库语句
        String sql = "UPDATE tb_brand SET brand_name=?, company_name=?, ordered=?, description=?, STATUS=? WHERE id=?;";//查询所有
        //    String sql ="INSERT INTO tb_brand (brand_name, company_name, ordered, description, STATUS)VALUES(?,?,?,?,?)";
        //7.获取对象
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        //8.传入参数:
        preparedStatement.setString(1,brandName);
        preparedStatement.setString(2,companyName);
        preparedStatement.setInt(3,ordered);
        preparedStatement.setString(4,description);
        preparedStatement.setInt(5,status);
        preparedStatement.setInt(6,id);

        //9.执行结果,用executeUpdate()查看,记录执行条数就行
        int count = preparedStatement.executeUpdate();
        System.out.println(count>0);
        //11.释放资源
        preparedStatement.close();
        connection.close();
    }

*/
/*

        //删除:DELETE FROM tb_brand  WHERE id=?;
        //参数:id
        //结果:返回一个boolean,去提示是否删除成功

        //写死参数:
        int id = 7;
        int id1= 8;
        //1.获取连接对象
        // 1.导入jar包
        //2.定义配置文件
        //3.加载配置文件(根据自己的文件来配置,主4)
        Properties prop = new Properties();//根据4去创建配置文件的对象
        //需要使用 FileInputStream 去加载配置文件,里面从传入配置文件的路径即可
        prop.load(new FileInputStream("jdbc-demo/src/druid.properties"));
        //4.获取连接池对象,使用DruidDataSourceFactory工场去创建连接对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        //5.获取数据库连接 connection
        Connection connection = dataSource.getConnection();
        //6.定义数据库语句
        String sql = "DELETE FROM tb_brand  WHERE id=?;";//查询所有
        //    String sql ="INSERT INTO tb_brand (brand_name, company_name, ordered, description, STATUS)VALUES(?,?,?,?,?)";
        //7.获取对象
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        //8.传入参数:
        preparedStatement.setInt(1,id);
        //9.执行结果,用executeUpdate()查看,记录执行条数就行
        int count = preparedStatement.executeUpdate();
        System.out.println(count>0);
        //多删除几行,需要多执行几次撒
        preparedStatement.setInt(1,id1);
        int count1 = preparedStatement.executeUpdate();
        System.out.println(count1>0);

        //11.释放资源
        preparedStatement.close();
        connection.close();
    }

*/


}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340