4-4 JDBC基础

第1关:JDBC与数据库的连接
任务描述:

本关任务:使用jdbc连接数据库

相关知识:

DriverManager:此类管理数据库驱动程序列表。可在JDBC下识别某个子协议的第一个驱动程序,用于建立数据库连接。

Driver:此接口处理与数据库服务器的通信。我们很少会直接与Driver对象进行交互。在编程中要连接数据库,必须先装载特定厂商的数据库驱动程序。

Connection:此接口具有用于联系数据库的所有方法。 Connection对象表示通信上下文,即与数据库的所有通信仅通过连接对象。

加载注册驱动:

Java加载数据库驱动通常是使用Class类的静态方法forName(),语法格式如下: Class.forName(String driverManager)

示例:

try 
{
    Class.forName("com.mysql.jdbc.Driver" );
} 
catch (ClassNotFoundException e) 
{
    e.printStackTrace();
}
建立连接:

成功加载完数据库驱动后,就可以建立数据库的连接了,使用DriverManager的静态方法getConnection()来实现。如下:

Connection conn = DriverManager.getConnection(url, user, password);

url用于标识数据库的位置,通过url地址告诉JDBC程序连接信息。

user是建立的数据库的用户名。

passwrod是数据库的密码。

示例(本数据库的信息情况):

String url = "jdbc:mysql://localhost:3306/";
String user = "root";
String password = "123123";
释放资源:

Jdbc程序运行完后,切记要释放程序在运行过程中创建的那些与数据库进行交互的对象,这些对象通常是ResultSet, StatementConnection对象。

特别是Connection对象,它是非常稀有的资源,用完后必须马上释放,如果Connection不能及时、正确的关闭,极易导致系统宕机。

Connection的使用原则是尽量晚创建,尽量早的释放。

为确保资源释放代码能运行,资源释放代码一定要放在finally语句中。

编程要求:

根据提示,在右侧编辑器补充代码: 加载驱动,连接数据库

测试说明:

平台会对你编写的代码进行测试:

测试输入:无;

预期输出:

Stuid INT(10)
name VARCHAR(20)
sex VARCHAR(4)
age INT(10)
数据库连接成功!

实现如下:

package JDBCcon;

import java.sql.*;

public class jdbccon 
{
    public static void getConn()
    {
        //forName加载驱动
        /********* Begin *********/
        try
        {
            Class.forName("com.mysql.cj.jdbc.Driver");
        }
        catch (ClassNotFoundException e)
        {
            e.printStackTrace();
        }

        /********* End *********/
        Connection conn = null;
        Statement statement = null;

        // 定义连接信息, "root"和"123123"是针对MySQL设置了用户名(root)和密码(123123)的情况
        // localhost:3306是mysql服务器地址及端口。
        // /********* Begin *********/
        String URL = "jdbc:mysql://localhost:3306";
        String USER = "root";
        String PASSWORD = "123123";


        /********* End *********/
        try
        {
            //getConnection建立连接
            /********* Begin *********/
            conn = DriverManager.getConnection(URL, USER, PASSWORD);

            /********* End *********/
            statement = conn.createStatement();
            statement.executeUpdate("drop database if exists mysql1");
            statement.executeUpdate("create database mysql1");
            statement.executeUpdate("use mysql1");
            String sql = "create table student(" +
                    "Stuid int , " +
                    "name varchar(20), " +
                    "sex varchar(4), " +
                    "age int" +
                    ")";
            statement.executeUpdate(sql);
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
        finally
        {
            try
            {
                if(statement!=null)
                    statement.close();
                if(conn!=null)
                    conn.close();
            }
            catch (SQLException e) 
            {
                e.printStackTrace();
            }
        }

    }
}
第2关:JDBC数据库和表的建立
任务描述:

本关任务:运用jdbc建立建立数据库和表。

相关知识

本关会用到的方法:

Connetion类主要用来链接数据库,常通过DriverManager.getConnection()来获取一个连接对象。

Statement对象用于执行sql语句,Statement的常用方法:executeUpdata()方法:运行增,删,改操作,返回更新的行数。

初始化对象:

ConnetionStatement两个对象进行初始化定义

Connection conn = null;
Statement statement = null;
创建数据库和表:

连接建立完毕后,就可以使用Connection接口的createStatement()方法来获取Statement对象;

statement = conn.createStatement();

并通过调用executeUpdate()方法来执行SQL语句。

statement.executeUpdate("sql语句");

需要执行的sql语句为(本关以Mysql为例):

//判断是否存在数据库mysql1
"drop database if exists mysql1"
//创建数据库mysql1
"create database mysql1"
//选择使用mysql
"use mysql1"  
//创建表student并创建表中数据
"create table student(" +
          "Stuid int , " +
    "name varchar(20), " +
      "sex varchar(4), " +
               "age int" +
                      ")";
编程要求

创建数据库mysql1

创建表student

student表结构为:

字段名类型备注约束
idint学生id非空
namevarchar(20)学生姓名
sexvarchar(4)学生性别
ageint学生年龄
测试说明:

平台会对你编写的代码进行测试:

测试输入:无

预期输出:

Stuid INT(10)
name VARCHAR(20)
sex VARCHAR(4)
age INT(10)
数据库表搭建成功!

实现如下:

package JDBCbuild;

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

public class jdbcb 
{
    public static void build()
    {
        //初始化Connection Statement值
        /********* Begin *********/
        Connection conn = null;
        Statement statement = null;

        /********* End *********/
        try
        {
            conn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/","root", "123123");
            /********* Begin *********/
            // 1. 执行SQL语句来创建数据库(如果数据库不存在)创建数据库 mysql1(如果不存在)
            String createDatabaseSQL = "CREATE DATABASE IF NOT EXISTS mysql1";
            statement = conn.createStatement();
            statement.execute(createDatabaseSQL);

            // 选择使用 mysql1 数据库
            statement.execute("USE mysql1");

            // 2. 执行SQL语句来创建表
            String createTableSQL = "CREATE TABLE student (" +
                    "Stuid INT(10), " +
                    "name VARCHAR(20), " +
                    "sex VARCHAR(4), " +
                    "age INT(10)" +
                    ")";
            statement.execute(createTableSQL);

            /********* End *********/
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
        finally
        {
            try
            {
                if(statement!=null)
                    statement.close();
                if(conn!=null)
                    conn.close();
            }
            catch (SQLException e)
            {
                e.printStackTrace();
            }
        }
    }
}
第3关:JDBC在表中增添数据
任务描述

本关任务:在建立的数据库表中减价数据。

相关知识

Connetion类主要用来链接数据库,常通过DriverManager.getConnection()来获取一个连接对象。

Statement的常用方法:executeUpdata()方法:运行增,删,改操作,返回更新的行数。

表中数据的添加

调用execute();执行sql语句来增添数据; 示例: statement.execute("sql语句");

sql增添语句

增添格式为: INSERT INTO '表名' VALUES ('数据',...,'数据'); 示例在student表中添加数据: statement.execute("INSERT INTO 'student' VALUES ('101', '张三', '男');");

编程要求

表中结构为:

字段名类型约束
novarchar(255)NULL
namevarchar(255)NULL
passwordvarchar(255)NULL
sexvarchar(255)NULL
salarydecimal(10,2)NULL

根据提示,在右侧编辑器补充代码,在student表中插入如下数据 no:11 name:张三 password:123 sex:男 salary:300.0 no:12 name:李四 password:123 sex:男 salary:80.0 no:21 name:王五 password:133 sex:女 salary:40.0

测试说明

平台会对你编写的代码进行测试:

测试输入:无;

预期输出:

no:11	name:张三	password:123	sex:男	salary:300.0
no:12	name:李四	password:123	sex:男	salary:80.0
no:21	name:王五	password:133	sex:女	salary:40.0
增添表数据成功!

实现如下:

package JDBCadd;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import java.sql.ResultSet;

public class addbc 
{
    static final String url = "127.0.0.1:3306";
    static final java.util.Properties info = new Properties();
    static {
        info.put("user", "root");
        info.put("password", "123123");
        initTableData();
    }

    private static void initTableData() {
        Connection connection = null;
        Statement statement = null;
        //建立数据库
        try {
            connection = DriverManager.getConnection("jdbc:mysql://" + url + "/information_schema", info);
            Statement createStatement = connection.createStatement();
            createStatement.execute("drop database if exists tsgc");
            createStatement.execute("create database tsgc");
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            connection = DriverManager.getConnection("jdbc:mysql://" + url + "/tsgc?useUnicode=true&characterEncoding=utf-8", info);
            //建立表
            statement = connection.createStatement();
            statement.execute("CREATE TABLE employee (no  varchar(255) NULL ,name  varchar(255) NULL ,password  varchar(255) NULL ,sex  varchar(255) NULL ,salary  decimal(10,2) NULL) DEFAULT CHARSET=utf8;");
            //在数据库的表中增添数据
            /********* Begin *********/

            // 建立表
            statement.execute("CREATE TABLE student (" +
                    "no VARCHAR(255), " +
                    "name VARCHAR(255), " +
                    "password VARCHAR(255), " +
                    "sex VARCHAR(255), " +
                    "salary DECIMAL(10,2)" +
                    ")  DEFAULT CHARSET=utf8;");

            // 插入数据
            statement.addBatch("INSERT INTO student (no, name, password, sex, salary) VALUES ('11', '张三', '123', '男', 300.0)");
            statement.addBatch("INSERT INTO student (no, name, password, sex, salary) VALUES ('12', '李四', '123', '男', 80.0)");
            statement.addBatch("INSERT INTO student (no, name, password, sex, salary) VALUES ('21', '王五', '133', '女', 40.0)");

            // 执行批处理
            statement.executeBatch();

                        // 查询数据并输出
            ResultSet resultSet = statement.executeQuery("SELECT * FROM student");
            while (resultSet.next())
            {
                System.out.print("no:"+ resultSet.getInt(1) +"\t");
                System.out.print("name:"+ resultSet.getString(2) +"\t");
                System.out.print("password:"+ resultSet.getString(3) +"\t");
                System.out.print("sex:"+ resultSet.getString(4) +"\t");
                System.out.println("salary:"+ resultSet.getDouble(5));
            }
            /********* End *********/
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                if (statement != null) {
                    statement.close();
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                if (connection != null) {
                    connection.close();
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

    }
}
第4关:JDBC表中数据的删除
任务描述

本关任务:在建立的数据库表中减价数据。

相关知识

Connetion类主要用来链接数据库,常通过DriverManager.getConnection()来获取一个连接对象。

Statement的常用方法:executeUpdata()方法:运行增,删,改操作,返回更新的行数。

perparedStatement();对象用于执行带或不带参数的预编译SQL语句;

setString();`:设置代替sql语句中的问号? 格式为`void setString(int parameterIndex,String x);
表中数据的删除

1,调用PerparedStatement();执行sql语句来删除数据; 示例: PreparedStatement pstmt = connection.prepareStatement(sql); 然后定义sql语句, String sql ="sql语句";

2,sql删除语句 删除格式为: delete from +表名 where +元组中属性 =? 示例在表employee中删除数据: delete from employee where no = ?

3,调用setString();设置?(问号为需要填充的内容)。

示例:

//将第一处的?设置成21。
pstmt.setString(1,"21");
编程要求

表中结构为:

字段名类型约束
novarchar(255)NULL
namevarchar(255)NULL
passwordvarchar(255)NULL
sexvarchar(255)NULL
salarydecimal(10,2)NULL

根据提示,在右侧编辑器补充代码,在student表中删除no为21的所有数据。

测试说明

平台会对你编写的代码进行测试:

测试输入:无;

预期输出:

no:11	name:张三	password:123	sex:男	salary:300.0
no:12	name:李四	password:123	sex:男	salary:80.0
删除表数据成功!

实现如下:

package JDBCdelete;

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

public class deletebc {

    static final String url = "127.0.0.1:3306";
    static final java.util.Properties info = new Properties();
    static {
        info.put("user", "root");
        info.put("password", "123123");
        initTableData();
    }

    private static void initTableData() {
        Connection connection = null;
        Statement statement = null;
        //建立数据库
        try {
            connection = DriverManager.getConnection("jdbc:mysql://" + url + "/information_schema", info);
            Statement createStatement = connection.createStatement();
            createStatement.execute("drop database if exists tsgc");
            createStatement.execute("create database tsgc");
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            connection = DriverManager.getConnection("jdbc:mysql://" + url + "/tsgc?useUnicode=true&characterEncoding=utf-8", info);
            //建立表
            statement = connection.createStatement();
            statement.execute("CREATE TABLE employee (no  varchar(255) NULL ,name  varchar(255) NULL ,password  varchar(255) NULL ,sex  varchar(255) NULL ,salary  decimal(10,2) NULL) DEFAULT CHARSET=utf8;");
            //在数据库的表中增添数据

            statement.execute("INSERT INTO `employee` VALUES ('11', '张三', '123', '男', '300.00');");
            statement.execute("INSERT INTO `employee` VALUES ('12', '李四', '123', '男', '80.00');");
            statement.execute("INSERT INTO `employee` VALUES ('21', '王五', '133', '女', '40.00');");
            //在数据库的表中删除数据
            /********* Begin *********/

            // 删除数据
            statement.execute("DELETE FROM employee WHERE no = '21'");

            // // 查询数据并输出
            // ResultSet resultSet = statement.executeQuery("SELECT * FROM employee");
            // while (resultSet.next())
            // {
            //     System.out.print("no:"+ resultSet.getInt(1) +"\t");
            //     System.out.print("name:"+ resultSet.getString(2) +"\t");
            //     System.out.print("password:"+ resultSet.getString(3) +"\t");
            //     System.out.print("sex:"+ resultSet.getString(4) +"\t");
            //     System.out.println("salary:"+ resultSet.getDouble(5));
            // }

            /********* end *********/
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                if (statement != null) {
                    statement.close();
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                if (connection != null) {
                    connection.close();
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

    }
}
第5关:JDBC在表中查询数据
任务描述

本关任务:在建立的数据库表中减价数据。

相关知识

Connetion类主要用来链接数据库,常通过DriverManager.getConnection()来获取一个连接对象。

Statement的常用方法:executeUpdata()方法:运行增,删,改操作,返回更新的行数。

PerparedStatement对象用于执行带或不带参数的预编译SQL语句;

setString(); `:设置代替sql语句中的问号? 格式为`void setString(int parameterIndex,String x);

ResultSet(); : 执行executeQuery()方法后返回的结果集.

表中数据的查找

1,调用PerparedStatement();执行sql语句来选择表;

示例(选择employee表):

statement = conn.prepareStatement("select * from employee ");

2,调用executeQuery()方法后返回的结果集.

示例:

ResultSet resultSet = statement.executeQuery();

3,调用next();遍历返还的结果集。得到结果集里面的数据。 示例

while (resultSet.next())
{
//取结果集中的数据,getInt取数字,getString取字符串。
int no = resultSet.getInt(1);
}

4,打印数据。

编程要求

表中结构为:

字段名类型约束
novarchar(255)NULL
namevarchar(255)NULL
passwordvarchar(255)NULL
sexvarchar(255)NULL
salarydecimal(10,2)NULL

根据提示,在右侧编辑器补充代码,查询并打印出表中所有数据。

注意:输出打印时用\t分隔。

测试说明

平台会对你编写的代码进行测试:

测试输入:无;

预期输出:

no:11	name:张三	password:123	sex:男	salary:300.0
no:12	name:李四	password:123	sex:男	salary:80.0
no:21	name:王五	password:133	sex:女	salary:40.0
查询全部表数据成功!

实现如下:

package JDBCseek;

import java.sql.*;

public class jdbcseek {
    public static void updateDB() {


        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        String url = "jdbc:mysql://localhost:3306/tsgc";
        String user = "root";
        String password = "123123";
        Connection conn= null;
        PreparedStatement statement = null;
        try{
            conn = DriverManager.getConnection (url,user,password );
            /********* Begin *********/
            //执行sql语句选择表
            statement = conn.prepareStatement("SELECT * FROM employee");
            ResultSet resultSet = statement.executeQuery();

            //遍历表,在控制到打印出全部数据
            while (resultSet.next())
            {
                System.out.print("no:"+ resultSet.getInt(1) +"\t");
                System.out.print("name:"+ resultSet.getString(2) +"\t");
                System.out.print("password:"+ resultSet.getString(3) +"\t");
                System.out.print("sex:"+ resultSet.getString(4) +"\t");
                System.out.println("salary:"+ resultSet.getDouble(5));
            }
            
             /********* End *********/
        } catch (SQLException e) {
            e.printStackTrace();
        }
        finally
        {
            try {
                if(statement!=null)
                    statement.close();
                if(conn!=null)
                    conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }
}
第6关:JDBC表中数据的更新
任务描述

本关任务:在建立的数据库表中减价数据。

相关知识

Connetion类主要用来链接数据库,常通过

DriverManager.getConnection()来获取一个连接对象。

Statement的常用方法:executeUpdata()方法:运行增,删,改操作,返回更新的行数。

PerparedStatement对象用于执行带或不带参数的预编译SQL语句;

setString();`:设置代替sql语句中的问号? 格式为`void setString(int parameterIndex,String x);
表中数据的更新

调用prepareStatement();执行sql语句来更新数据; 示例: statement=conn.prepareStatement("sql语句");

sql更新语句

更新格式为: update 表名 set 更新元组中属性 = ‘更新属性值’ where元组中属性 =‘属性值’ 示例在employee表中更新数据: //更新元组中属性为‘男’的密码为222; update employee set password = '222' where sex ='男' 最后调用 executeUpdate();完成更新。

编程要求

表中结构为:

字段名类型约束
novarchar(255)NULL
namevarchar(255)NULL
passwordvarchar(255)NULL
sexvarchar(255)NULL
salarydecimal(10,2)NULL

根据提示,在右侧编辑器补充代码,在student表中更新性别sex员工的密码password222

测试说明

平台会对你编写的代码进行测试:

测试输入:无;

预期输出:

no:11	name:张三	password:222	sex:男	salary:300.0
no:12	name:李四	password:222	sex:男	salary:80.0
no:21	name:王五	password:133	sex:女	salary:40.0
更新表数据成功!

实现如下:

package JDBCupdata;

import java.sql.*;

public class jdbcupdata {
    public static void updateDB() {


        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        String url = "jdbc:mysql://localhost:3306/tsgc";
        String user = "root";
        String password = "123123";
        Connection conn= null;
        PreparedStatement statement = null;

        try {
            conn = DriverManager.getConnection (url,user,password );
            /********* Begin *********/
            //调用方法执行sql语句
            statement = conn.prepareStatement("UPDATE employee SET password = '222' WHERE sex = '男'");

            //更新数据
            statement.executeUpdate();


            /********* End *********/
        } catch (SQLException e) {
            e.printStackTrace();
        }

        try{
            conn = DriverManager.getConnection (url,user,password );

            //执行sql语句选择表
            statement = conn.prepareStatement("select * from employee ");
            ResultSet resultSet = statement.executeQuery();
            //遍历表,在控制到打印出全部数据
            while (resultSet.next()) {
                int no = resultSet.getInt(1);
                String name = resultSet.getString(2);
                int pw = resultSet.getInt(3);
                String sex = resultSet.getString(4);
                double salary = resultSet.getDouble(5);
                System.out.println("no:"+no + "\t" +"name:"+ name + "\t"+ "password:"+pw+ "\t"+"sex:"+sex + "\t" +"salary:"+ salary);

            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        finally
        {
            try {
                if(statement!=null)
                    statement.close();
                if(conn!=null)
                    conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }

}

先赞后看,养成习惯!!!^ _ ^ ❤️ ❤️ ❤️
码字不易,大家的支持就是我的坚持下去的动力。点赞后不要忘了关注我哦!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: sqljdbc4 是 Java 连接 SQL Server 数据库的全新驱动包。它是由微软公司提供的一个用于连接 SQL Server 数据库JDBC 驱动程序。CSND 则是 CSDN(中国最大的 IT 技术社区)上关于 sqljdbc4 的一个专题页面。 sqljdbc4 这个驱动包主要用于在 Java 应用程序中连接和操作 SQL Server 数据库。它提供了一组丰富的 API,开发人员可以通过这些 API 来实现与数据库的交互。使用 sqljdbc4,开发人员可以通过 Java 代码来连接数据库、执行 SQL 语句、获取查询结果等操作。 CSND 上的 sqljdbc4 专题页面则为开发人员提供了一系列与 sqljdbc4 相关的技术文章、教程、文档和示例代码。这些资源可以帮助开发人员快速入门 sqljdbc4,了解如何使用它来连接和操作 SQL Server 数据库。 在 CSND 的 sqljdbc4 专题页面上,开发人员可以找到一些介绍 sqljdbc4 的基础知识的文章,例如如何下载和安装 sqljdbc4,如何配置和初始化 JDBC 连接等。同时,还可以学习如何使用 sqljdbc4 执行增删改查等操作,以及如何处理事务、异常和性能优化等方面的内容。 总之,sqljdbc4 是连接 SQL Server 数据库JDBC 驱动程序,而 CSND 则是一个技术社区平台,提供了关于 sqljdbc4 的丰富的技术资源和帮助文档,方便开发人员学习和使用 sqljdbc4 进行数据库开发。 ### 回答2: sqljdbc4是一个用于连接Java应用程序和SQL Server数据库驱动程序。csdn是一个中文IT技术社区,其中包含了大量的技术博客、论坛和资源分享等内容。 SQL Server是一种关系型数据库管理系统,它允许用户存储、操作和检索数据。而Java是一种面向对象的编程语言,常用于开发Web应用和企业级应用。 sqljdbc4是连接Java应用程序和SQL Server数据库驱动程序之一。通过该驱动程序,Java开发人员可以使用Java代码连接到SQL Server数据库,并执行各种数据库操作,如插入、更新、删除、查询等。 csdn作为一个IT技术社区,提供了大量的技术资源和知识分享。在csdn上,开发人员可以找到各种与sqljdbc4相关的教程、代码示例和问题解答等。通过参与csdn的讨论和交流,开发人员可以更好地了解如何使用sqljdbc4驱动程序来连接到SQL Server数据库,并解决在开发过程中遇到的问题。 总的来说,sqljdbc4和csdn都是与连接Java应用程序和SQL Server数据库相关的资源。sqljdbc4提供了连接和操作SQL Server数据库驱动程序,而csdn为开发人员提供了技术资源和知识分享平台,帮助开发人员更好地了解和使用sqljdbc4驱动程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值