JDBC练习题

合集下载

jdbc实操题

jdbc实操题

jdbc实操题好的,以下是一个简单的 JDBC 实操题:题目:使用 JDBC 连接 MySQL 数据库,查询 "students" 表中的所有数据。

要求:编写 Java 代码实现连接 MySQL 数据库,并查询 "students" 表中的所有数据。

输出查询结果。

示例代码:javaimport java.sql.*;public class JdbcExample {public static void main(String[] args) {String url = "jdbc:mysql://localhost:3306/mydatabase";String username = "root";String password = "password";try (Connection conn = DriverManager.getConnection(url, username, password);Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("SELECT * FROM students")) {while (rs.next()) {int id = rs.getInt("id");String name = rs.getString("name");int age = rs.getInt("age");System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age);}} catch (SQLException e) {e.printStackTrace();}}}解释:首先,我们定义了数据库连接的 URL、用户名和密码。

jdbc选择题及解析

jdbc选择题及解析

jdbc选择题及解析题目1,JDBC是什么意思?解析,JDBC是Java数据库连接(Java Database Connectivity)的缩写,它是Java语言用于执行与数据库的连接和操作的API。

JDBC提供了一种标准的方法,使得Java应用程序能够与各种不同类型的数据库进行交互,无论是关系型数据库还是非关系型数据库。

题目2,JDBC的工作原理是什么?解析,JDBC的工作原理是通过Java应用程序调用JDBC API来与数据库进行交互。

首先,应用程序通过JDBC驱动程序管理器加载适当的数据库驱动程序。

然后,应用程序使用驱动程序管理器来获取数据库连接。

一旦建立了连接,应用程序可以创建并执行SQL语句,以及处理查询结果。

最后,应用程序关闭连接并释放资源。

题目3,JDBC的主要组件有哪些?解析,JDBC的主要组件包括驱动程序管理器(DriverManager)、数据库驱动程序(Database Driver)、连接接口(Connection)、语句接口(Statement)、结果集接口(ResultSet)等。

驱动程序管理器用于加载数据库驱动程序,数据库驱动程序负责与特定类型的数据库进行通信,连接接口用于建立和管理与数据库的连接,语句接口用于执行SQL语句,结果集接口用于处理查询结果。

题目4,JDBC的优点是什么?解析,JDBC的优点包括跨平台性、灵活性和可移植性。

由于JDBC是基于Java语言的,因此可以在各种操作系统上运行,实现了跨平台性。

此外,JDBC提供了灵活的API,允许开发人员编写复杂的数据库操作,同时也保持了与数据库的独立性,这增加了应用程序的可移植性。

题目5,JDBC与ODBC有何区别?解析,JDBC是Java数据库连接的API,而ODBC是Open Database Connectivity的缩写,是微软提出的用于连接数据库的API。

JDBC是基于Java语言的,而ODBC是基于C语言的。

《JDBC》笔试1套

《JDBC》笔试1套

《JDBC》笔试1套一、选择题41. 使用JDBC事务的步骤是()(多选)A) 取消Connection的事务自动提交方式B) 发生异常回滚事务C) 获取Connection对象D) 操作完毕提交事务42. 以下对JDBC事务描述错误的是()A) JDBC事务属于JAVA事务的一种B) JDBC事务属于容器事务类型C) JDBC事务可以保证操作的完整性和一致性D) JDBC事务是由Connection发起的,并由Connection控制43. 要通过可滚动的结果集更新数据,以下正确的是()A) pst=con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATA BLE)B) pst=con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_O NLY)C) pst=con.prepareStatement(sql, Resu ltSet.TYPE_SCROLL_SENSITIVE)D) pst=con.prepareStatement(sql, ResultSet.CONCUR_UPDATABLE)44. 存储过程pro有两个参数,第一个为输入参数,第二个为输出参数,以下代码正确的是()A) CallableStatement cst=con.prepareCall(“(call pro(?,?))”);B) CallableStatement cst=con.prepareCall(“(call pro(?))”);C) CallableStatement cst=con.prepareCall(“{call pro(?,?)}”);D) CallableStatement cst=con.prepareCall(“{callpro(?,?,?)}”);45. 以下描述正确的是( )A) CallableStatement是PreparedStatement的父接口B) PreparedStatement是CallableStatement的父接口C) CallableStatement是Statement的子接口D) PreparedStatement是Statement的父接口46. 要删除book表中书籍(bookName)是”java”的记录,以下代码正确的是()String sql=”delete from book where bookName=?”;PreparedStatement pst=con.preparedStatement(sql);______________________________pst.execute();A) pst.setString(1,”java”);B) pst.setString(0,”java”);C) pst.setInt(0,”java”);D) 以上选项都不正确47. 获取ResutlSet对象rst的第一行数据,以下正确的是()A) rst.hashNext();B) rst.next();C) rst.first();D) rst.nextRow();48. 以下可以正确获取结果集的有()(多选)A) Statement sta=con.createStatement();ResultSet rst=sta.executeQuery(“select * from book”);B) Statement sta=con.createStatement(“select * from book”);ResultSet rst=sta.executeQuery();C) PreparedStatement pst=con.preparedStatement();ResultSet rst=pst.executeQuery(“select * from book”);D) PreparedStatement pst=con.prepare dStatement(“select* from book”);ResultSet rst=pst.executeQuery();49. 以下负责建立与数据库连接的是()A) StatementB) PreparedStatementC) ResultSetD) DriverManager50. 使用JDBC连接数据库的顺序是()(多选)A) 加载驱动B) 导入驱动包C) 发送并处理SQL语句D) 建立于数据库的连接E 关闭连接二、简答题1、在java中如果声明一个类为final,表示什么意思?2、父类的构造方法是否可以被子类覆盖(重写)?3、请讲述String 和StringBuffer的区别。

JDBC选择题

JDBC选择题

JDBC选择题1.典型的JDBC程序按 DBECFA 顺序编写A. 释放资源B. 获得与数据库的物理连接C. 执行SQL命令D. 注册JDBC DriverE. 创建不同类型的StatementF. 如果有结果集, 处理结果集2.JDBC驱动程序的种类有 C 。

A. 两种B. 三种C. 四种D. 五种3.执行同构的SQL,用 C ;执行异构的SQL用 B ;调用存储进程或函数用 A。

A. CallableStatementB. StatementC. PreparedStatement4.接口Statement中定义的execute方法的返回类型是 C ,代表的含义是 E ;executeQuery方法返回的类型是 A ;executeUpdate 返回的类型是 B ,代表的含义是 D 。

A. ResultSetB. intC. booleanD. 受影响的记录数量E. 有无ResultSet返回5.JDBC编程的异常类型分为 AC 。

A. SQLExceptionB. SQLErrorC. SQLWarningD. SQLFatalE. SQLTruncation6.在接口Connection中定义了方法setTransactionIsolation,它使用一些常量作为参数指定控制数据库并发操作的隔离级别,设置隔离层次E 只解决了dirty reads;设置隔离层次 D 只可以做到repeatable reads;设置隔离层次 C 可以解决phantom reads。

A. TRANSACTION_NONEB. TRANSACTION_READ_UNCOMMITEDC. TRANSACTION_SERIALIZABLED. TRANSACTION_REPEATABLE_READE. TRANSACTION_READ_COMMITED7.如果要限制某个查询语句返回的最多的记录数,可以通过调用Statement的方法 C来实现。

JDBC练习的题目

JDBC练习的题目

一、选择题1.有关JDBC的选项正确的是哪一个?A.JDBC是一种被设计成通用的数据库连接技术,JDBC技术不光可以应用在Java程序里面,还可以用在C++这样的程序里面。

B.JDBC技术是SUN公司设计出来专门用在连接Oracle数据库的技术,连接其他的数据库只能采用微软的ODBC解决方案C.微软的ODBC和SUN公司的JDBC解决方案都能实现跨平台使用,只是JDBC的性能要高于ODBCD.JDBC只是个抽象的调用规范,底层程序实际上要依赖于每种数据库的驱动文件2.选择JDBC可以执行的语句(多选)A.DDLB.DCLC.DMLD.以上都可以3.选择Java程序开发中推荐使用的常用数据库(多选)a.Oracleb.SQL Server 2000c.MySQLd.DB24.哪个不是JDBC用到的接口和类?a.Systemb.Classc.Connectiond.ResultSet5.使用Connection 的哪个方法可以建立一个PreparedStatement接口?A.createPrepareStatement()B.prepareStatement()C.createPreparedStatement()D.preparedStatement()6.下面的描述正确的是什么?A.PreparedStatement继承自StatementB.Statement继承自PreparedStatementC.ResultSet继承自StatementD.CallableStatement继承自PreparedStatement7.下面的描述错误的是什么?A.Statement的executeQuery()方法会返回一个结果集B.Statement的executeUpdate()方法会返回是否更新成功的boolean值C.使用ResultSet中的getString()可以获得一个对应于数据库中char类型的值D.ResultSet中的next()方法会使结果集中的下一行成为当前行8.如果数据库中某个字段为numberic型,可以通过结果集中的哪个方法获取?A.getNumberic()B.getDouble()C.getBigDecimal ()D.getFloat()9.在Jdbc中使用事务,想要回滚事务事务的方法是什么?A.Connection的commit()B.Connection的setAutoCommit()C.Connection的rollback()D.Connection的close()10.在JDBC编程中执行完下列SQL语句SELECT name, rank, serialNoFROM employee,能得到rs的第一列数据的代码是哪两个?A.rs.getString(0);B.rs.getString("name");C.rs.getString(1);D.rs.getString("ename");11.下面关于PreparedStatement的说法错误的是什么A.PreparedStatement继承了StatementB.PreparedStatement可以有效的防止SQL注入C.PreparedStatement不能用于批量更新的操作D.PreparedStatement可以存储预编译的Statement,从而提升执行效率12.下面的选项加载MySQL驱动正确的是哪一个?A.Class.forname("org.gjt.mm.mysql.Driver");B.Class.forname("org.gjt.mysql.jdbc.Driver");C.Class.forname("org.git.mm.mysql.Driver");D.Class.forname("org.git.mysql.jdbc.Driver");13.下面的选项加载MySQL驱动正确的是哪一个?A.Class.forname("com.mysql.JdbcDriver");B.Class.forname("com.mysql.jdbc.Driver");C.Class.forname("com.mysql.driver.Driver");D.Class.forname("com.mysql.jdbc.MySQLDriver");14.下面代码加载Oracle驱动正确的是哪一个?A.DriverManager.register("oracle.driver.OracleDriver");B.DriverManager.forname("oracle.driver.OracleDriver");C.DriverManager.load("oracle.driver.OracleDriver");D.DriverManager.newInstance("oracle.driver.OracleDriver");15.有关Connection描述错误的是哪一个?A.Connection是Java程序与数据库建立的连接对象,这个对象只能用来连接数据库,不能执行SQL语句。

JDBC基础及应用_选择题

JDBC基础及应用_选择题

1. JDBC驱动程序有几种类型:()A 两种B 三种C 四种D 五种参考答案:C2. 典型的JDBC程序按()顺序编写?A 释放资源B 获得与数据库的物理连接C 执行SQL命令D 注册JDBC DriverE 创建不同类型的StatementF 如果有结果集, 处理结果集参考答案:DBECFA3. 在下列选项中,哪一个可执行同构的sql语句?()A CallableStatementB StatementC PreparedStatement参考答案:C4. 在下列选项中,哪一个可执行异构的sql语句?()A CallableStatementB StatementC PreparedStatement参考答案:B5. 在下列选项中,哪一个可用于调用存储过程或函数?()A CallableStatementB StatementC PreparedStatement参考答案:A6.JDBC编程的异常类型分为:A. SQLExceptionB. SQLErrorC. SQLWarningD. SQLFatalE. SQLTruncation参考答案:AC7. 接口Statement中定义的execute方法的返回类型所代表的含义是:()A 结果集ResultSetB 受影响的记录数量C 有无ResultSet返回参考答案:C8. 接口Statement中定义的executeQuery方法的返回类型是:()A ResultSetB intC boolean参考答案:A9. 接口Statement中定义的executeUpdate方法的返回类型以及锁代表的含义分别是:()A ResultSetB intC booleanD 受影响的记录数量E 有无ResultSet返回参考答案:BD10. 如果要限制某个查询语句返回的最多的记录数,可以通过调用Statement的什么方法来实现?()A setFetchSizeB setMaxFieldSizeC setMaxRows参考答案:C11. 以下哪些是定义在ResultSet中用于Cursor定位的方法:ABCEFA next()B beforeFirst()C afterLast()D isBeforeFirst()E absolute(int)F relative(int)参考答案:ABCEF12. 接口RowSet实现了接口:()A StatementB ResultSetC updateD populate参考答案:B。

JDBC专项练习

JDBC专项练习

1.请写出JDBC连接数据库的6个步骤。

2.Statement 和PreparedStatement 之间的区别。

3.用Java语言写一个连接ORACLE 数据库的程序,能够完成修改和查询工作。

4.JDBC的分页怎样实现?5.请简述什么是JDBC,JDBC的工作原理是什么?6.用JDBC 查询学生成绩单, 把主要代码写出来。

答:Connection cn = null;PreparedStatement pstmt =null;Resultset rs = null;try{Class.forname(driveClassName);cn = DriverManager.getConnection(url,username,password);pstmt = cn.prepareStatement(“select score.* from score ,student “ +“where score.stuId = student.id and = ?”);pstmt.setString(1,studentName);Resultset rs = pstmt.executeQuery();while(rs.next()){system.out.println(rs.getInt(“subject”) + “ ” + rs.getFloat(“score”) );}}catch(Exception e){e.printStackTrace();}finally{if(rs != null) try{ rs.close() }catch(exception e){}if(pstmt != null) try{pstmt.close()}catch(exception e){}if(cn != null) try{ cn.close() }catch(exception e){}}7.请简述Driver,DriverManager,Connection,Statement,ResultSet的作用分别是什么?答:Driver:驱动程序DriverManager:驱动程序的管理类,利用连接字符串测试已注册的一个或多个驱动中哪个可用Connecton:数据库连接Statement:数据库的操作对象,PreparedStatement预编译、CallableStatement存储过程等ResultSet:结果集。

编程选择题40道:Java数据库连接:JDBC与数据库交互.Tex

编程选择题40道:Java数据库连接:JDBC与数据库交互.Tex

1.在JDBC中,用于连接数据库的接口是什么?o A. PreparedStatemento B. DriverManagero C. ResultSeto D. Connection答案:D解析:在JDBC中,Connection接口用于表示与数据库的连接。

2.下列哪个类用于处理SQL语句的执行结果?o A. Statemento B. ResultSeto C. Connectiono D. Driver答案:B解析:ResultSet类用于处理执行SQL语句的结果集。

3.JDBC中,用于执行SQL语句的类是?o A. Connectiono B. PreparedStatemento C. ResultSeto D. DriverManager答案:B解析:PreparedStatement类用于执行预编译的SQL语句,Statement类则用于执行简单的SQL语句。

4.要使用JDBC连接数据库,哪个方法用于加载JDBC驱动?o A. Connection.getConnection()o B. DriverManager.getDriver()o C. Class.forName()o D. PreparedStatement.prepareStatement()答案:C解析:Class.forName()用于加载JDBC驱动,这是在连接数据库前必须要执行的步骤。

5.下面哪个选项不是PreparedStatement相对于Statement的优点?o A. 预编译SQL语句提高执行效率o B. 处理结果集更灵活o C. 防止SQL注入o D. 设置参数更方便答案:B解析:PreparedStatement在性能、安全性和参数设置上优于Statement,但两者处理结果集的能力基本相同。

6.JDBC中的DriverManager类的哪个方法用于建立数据库连接?o A. getConnection()o B. getDriver()o C. registerDriver()o D. setLoginTimeout()答案:A解析:getConnection()方法用于根据给定的数据库URL、用户名和密码建立数据库连接。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JDBC练习题1,选择题1。

哪个是正确的JDBC选择?A。

JDBC是一种通用的数据库连接技术。

JDBC技术不仅可以用在Java程序中,也可以用在像C++这样的程序中B。

JDBC技术是SUN公司专门为连接Oracle数据库而设计的。

连接其他数据库只能使用微软的ODBC解决方案C。

微软的ODBC和SUN公司的JDBC解决方案可以跨平台使用。

只有JDBC的性能高于ODBCD。

JDBC只是一个抽象的调用规范。

底层程序实际上依赖于每个数据库的驱动程序文件。

2.选择JDBC可以执行的语句(多选)。

所有以上可以是3。

选择推荐用于Java程序开发的常用数据库(多选)a . Oracleb . SQL server 2000c . MySQLd . db 24 .哪一个不是JDBC使用的接口和类?系统类连接结果集5 .哪种连接方法可以用来建立准备状态接口?a . create preparentation()b . prepare station()c . create preparentation()d . prepared statement()6。

下面正确的描述是什么?A。

准备语句继承自语句b。

语句继承自准备语句c。

结果集继承自语句d。

调用语句继承自准备语句7。

下面的描述错误是什么?A的executeQuery()方法。

语句返回一个结果集。

B的executeUpdate()方法。

语句返回更新是否成功的布尔值。

在结果集中使用getString()可以获得对应于数据库中字符类型的值d。

结果集中的next()方法将使结果集中的下一行成为当前的第8行。

如果数据库中的某个字段是数字类型的,它可以在结果集中获得哪种方法?a . getnumberic()b . getdouble()c . getbigdecimal()d . getfloat()9。

使用Jdbc中的事务,您想用什么方法回滚事务?A。

连接的提交()连接的设置自动提交()连接的回滚()连接的关闭() 10。

在JDBC编程中,在执行以下的“从雇员处选择姓名、等级、序列号”的SQL语句后,哪两个代码可以获得rs数据的第一列?a . RS . GetString(0);b . RS . GetString(\ c . RS . GetString(1);D。

rs.getString(\11。

什么是A。

准备语句继承了语句b。

准备语句可以有效地防止D的SQL注入操作。

PreparedStatement可以存储预编译语句,从而提高执行效率12。

下列哪个选项是加载MySQL驱动程序的正确选项?a . class . forname(\b . class . forname(\c . class . forname(\d . class . forname(\ 13))。

加载MySQL驱动程序的正确选项是什么?a . class . forname(\b . class . forname(\c . class . forname(\d . class . forname(\ 14))。

下列代码中哪个是加载Oracle驱动程序的正确代码?a . driver manager . register(\b . driver manager . forname(\c . driver manager . load(\d . driver manager . new instance(\ 15)。

哪个是连接描述错误?A。

连接是在Java程序和数据库之间建立的连接对象。

此对象只能用于连接数据库,不能执行SQL语句B的数据库事务控制。

JDBC取决于连接对象。

C。

连接对象应该在使用后及时关闭,否则会给数据库带来负担。

仅使用MySQL和Oracle数据库的D JDBC程序需要创建连接对象,而使用其他数据库的JDBC程序无需创建连接对象即可执行CRUD操作16。

对JDBC的正确描述是什么?A。

默认情况下,JDBC交易自动提交。

事务将在不执行SQL语句的情况下打开。

交易将在执行后自动提交。

如果发生异常,事务将自动回滚。

B。

JDBC的东西不同于数据库的东西。

JDBC的东西依赖于JDBC 的驱动文件,并且有个独立于数据库的日志文件,所以JDBC的东西可以代替数据库的东西。

如果你需要打开一个手动提交的东西,你需要调用连接对象的start()方法。

如果在没有提交交易的情况下关闭了连接连接,JDBC 将自动提交交易17.下列哪个预编译的SQL是正确的?A。

选择*自?;选择?什么?什么?来自电磁脉冲;C。

从雇员薪资>中选择*(?18上述情况均不成立。

哪个选项可以执行预编译的SQL?a .语句b .准备语句c .准备语句以上都不是19。

如果为以下预编译SQL的第三个问号赋值,哪个选项是正确的?更新电磁脉冲组名称=?,job=?,工资=?哪里empno=?;(3,2000);c . PST . set float(\d . PST . set string(\ 20)。

关于准备陈述,哪项陈述是正确的?A。

此对象只能执行带有问号占位符的预编译SQL,而不能执行SQL语句执行对象时,只能执行查询语句,其他预编译的SQL语句只能由语句执行C。

此对象不能在JDBC事务中使用,因为它只能执行查询语句D.此对象绑定到一个SQL预编译语句,并且不能执行其他预编译SQL 语句21.关于预编译的SQL,哪条语句是错误的?A。

PreparedStatementB可以重复执行预编译的SQL。

创建PreparedStatement对象后,预编译的SQL语句被传递给数据库解决方案a。

之后,当PreparedStatement执行预编译时,实际上只有占位符的参数被传递给数据库。

如果需要批量插入1000条记录,预编译的SQL只被数据库解析一次,其余的将在数据库接受参数数据后执行,大大提高了速度。

预编译SQL具有良好的安全性,能够抵抗语句所没有的数据库脚本注入攻击D。

预编译SQL的占位符可以替换数据表、表达式数据甚至sub 查询语句22。

关于结果集,下列哪个选项是错误的?A。

结果集是一个查询结果集对象。

如果在JDBC执行的查询语句中没有找到数据,那么a.resultset将为空B。

要确定结果集是否有查询结果集,可以调用它的next()方法。

C.如果连接对象已关闭,结果集也不能使用。

D。

如果一个东西没有被提交,那么在结果集中就看不到这个东西过程中的临时数据23.从电磁脉冲中选择计数(*);该语句被执行。

如果employee表中没有数据,那么它在ResultSet中会是什么样子?a .空b .数据c。

不为空,但没有数据d,以上选项都不正确24。

对于以下选项,哪个是正确的MySQL数据库网址?A。

JDBC:MySQL://Localhost/ComPany B . JDBC:MySQL://Localhost:3306:ComPany C . JDBC:MySQL://Localhost:3306/ComPany D . JDBC:MySQL://Localhost/3306/ComPany25。

在编写JDBC时,下列哪个选项错误地使用了包的类?a . Java . SQL . connectionb . Java . SQL . statementc . Java . SQL . prepared statement d . Java . SQL . driver 2 .编程问题年以前,我国的啤酒生产商被分成几个小组,各自独立地进行战斗。

各地都有自己的生产企业。

他们受到地方主义的保护。

它们规模小,经营业绩差,抵御市场风险的能力差。

近年来,这种模式正在被打破。

国内一些啤酒巨头,如青岛啤酒、燕京啤酒,已经开始大规模跨区域重组,重新整合市场,逐步扩大企业生产规模,形成新的市场竞争优势。

例如,青岛啤酒目前有48家国内生产企业啤酒生产销售时间较短,库存较低。

原因是啤酒可能在短时间内变质,库存成本和生产成本相对较高。

为了减少库存和保持强大的市场竞争力,我们需要对生产和需求的变化做出快速反应。

这需要对需求进行科学预测,作为下一年生产计划的基础。

宁波一家啤酒厂目前正在为XXXX制定生产计划,该计划需要市场需求预测作为制定计划的参考。

经理办公室要求财务部负责计算并提出预测数据。

计划财务部认为企业过去15年的销售数据对预测是有用的。

因此企业历年的销售数据如下:序号1 2 3 4 5 6 7 8 9 10 11 12年1995 1996 1997 1998 1999年XXXX第一季度产量数(4)10数(10)数(10)数(10)数(10)数(10)第二季度产量第三季度产量第四季度总产量是第二季度产量、第三季度产量和第四季度产量。

2.编写一个JDBC 程序,将表1中的数据插入数据库,要求使用一个完整的事务,而不是一个没有提交过一次的事务。

3。

编写JDBC程序读取数据库中的数据,并在控制台中输出4年的年均增长值。

使用数据表中最近四年的数据预测未来五年的年度啤酒产量数据(四个季度和总产量)并输出到控制台5。

用户在控制台上输入任意一年,并在控制台上打印该年的记录。

如果用户输入的是1995年之前的一年,则需要输出年份、四个季度的输出以及总的年产量(1)。

控制台输出“无数据”(2)如果用户输入1995年和XXXX之间的一年,则从数据库中查询输出数据(3)如果输入是在XXXX之后的一年,则输出数据是预测数据(见第四个问题中的想法)。

相关文档
最新文档