Java开发工程师(Web方向) - 03.数据库开发 - 期末考试

期末考试

编程题

本编程题包含4个小题,覆盖知识点从基础的JDBC、连接池到MyBatis。

1(10分)

有一款在线教育产品“天天向上”主要实现了在手机上查看课程表的功能。该产品的后端系统有一张保存了所有客户课程信息的数据库表,表结构如下:

请使用JDBC编写一段程序,实现读取用户名为“ZhangSan”的同学的所有课程名称,输出到控制台终端。

答:

数据库:

/usr/local/mysql/bin
./mysql -u root -p
mysql> CREATE DATABASE final_assignment;
mysql> grant all privileges on final_assignment.* to matt@localhost;
mysql> quit
./mysql -u matt -p;
mysql> use final_assignment;
mysql> CREATE TABLE Enrollment (
    -> id int auto_increment primary key,
    -> UserName varchar(100) not null,
    -> courseName varchar(100) not null
    -> );
mysql> INSERT INTO Enrollment VALUES (null, "ZhangSan", "Math");
mysql> INSERT INTO Enrollment VALUES (null, "Lisi", "Math");
mysql> INSERT INTO Enrollment VALUES (null, "ZhangSan", "Graphics");

JDBC程序:

public class curriculum {

    static final String DRIVER_NAME = "com.mysql.jdbc.Driver";
    static final String URL = "jdbc:mysql://localhost/final_assignment";
    static final String USER_NAME = "matt";
    static final String PASSWORD = "matt";

    public static void curriculumDataProcessing() throws ClassNotFoundException {
        Connection conn = null;
        PreparedStatement ptmt = null;
        ResultSet rs = null;

        String sql = "select CourseName from Enrollment where UserName = ?";
        String userName = "ZhangSan";

        Class.forName(DRIVER_NAME);

        try {
            conn = DriverManager.getConnection(URL, USER_NAME, PASSWORD);
            ptmt = conn.prepareStatement(sql);
            ptmt.setString(1, userName);
//            System.out.println(ptmt.toString());
            rs = ptmt.executeQuery();

            while (rs.next()) {
                System.out.println(rs.getString("courseName"));
            }

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

    public static void main(String[] args) throws ClassNotFoundException {
        curriculumDataProcessing();
    }
}

输出:

2(10分)

使用游标方式读取题目1中所有用户的所有课程的课程名称和用户名称,输出到控制台终端。

答:

在题1的代码中修改:

static final String URL = "jdbc:mysql://localhost/final_assignment?useCursorFetch=true";

String sql = "select UserName, CourseName from Enrollment";

ptmt.setFetchSize(2);

System.out.println(rs.getString("userName") + ": " + rs.getString("courseName"));

删除ptmt.setString(1, userName);

public class CurriculumFetchQ2 {

    static final String DRIVER_NAME = "com.mysql.jdbc.Driver";
    static final String URL = "jdbc:mysql://localhost/final_assignment?useCursorFetch=true";
    static final String USER_NAME = "matt";
    static final String PASSWORD = "matt";

    public static void curriculumDataProcessing() throws ClassNotFoundException {
        Connection conn = null;
        PreparedStatement ptmt = null;
        ResultSet rs = null;

        String sql = "select UserName, CourseName from Enrollment";

        Class.forName(DRIVER_NAME);

        try {
            conn = DriverManager.getConnection(URL, USER_NAME, PASSWORD);
            ptmt = conn.prepareStatement(sql);
            ptmt.setFetchSize(2);
            rs = ptmt.executeQuery();

            while (rs.next()) {
                System.out.println(rs.getString("userName") + ": " + rs.getString("courseName"));
            }

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

    public static void main(String[] args) throws ClassNotFoundException {
        curriculumDataProcessing();
    }
}

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; color: #f4f4f4; background-color: #000000 }
span.s1 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; color: #f4f4f4; background-color: #000000 }
span.s1 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; color: #f4f4f4; background-color: #000000 }
span.s1 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; color: #f4f4f4; background-color: #000000 }
span.s1 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; color: #f4f4f4; background-color: #000000 }
span.s1 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; color: #f4f4f4; background-color: #000000 }
span.s1 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; color: #f4f4f4; background-color: #000000 }
span.s1 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; color: #f4f4f4; background-color: #000000 }
span.s1 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; color: #f4f4f4; background-color: #000000 }
span.s1 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; color: #f4f4f4; background-color: #000000 }
span.s1 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; color: #f4f4f4; background-color: #000000 }
span.s1 { }

时间: 2024-08-24 12:28:28

Java开发工程师(Web方向) - 03.数据库开发 - 期末考试的相关文章

Java开发工程师(Web方向) - 03.数据库开发 - 第1章.JDBC

第1章--JDBC JDBC基础 通过Java Database Connectivity可以实现Java程序对后端数据库的访问 一个完整的数据库部署架构,通常是由客户端和服务器端两部分组成 客户端封装数据库请求,并发送给服务器端,服务器端执行完毕后将结果返回给客户端 常见客户端工具: MySQL Workbench(图形化工具操作简单,但只能实现简单的查询) JDBC(驱动程序jar包) 命令行工具(直接敲入SQL语句进行查询) 市面上多种数据库不尽相同,学习成本高,数据库迁移的移植性 --

Java开发工程师(Web方向) - 03.数据库开发 - 第4章.事务

第4章--事务 事务原理与开发 事务Transaction: 什么是事务? 事务是并发控制的基本单位,指作为单个逻辑工作单元执行的一系列操作,且逻辑工作单元需满足ACID特性. i.e. 银行转账:开始交易:张三账户扣除100元:李四账户增加100元:结束交易. 事务的特性:ACID 原子性 Atomicity:整个交易必须作为一个整体来执行.(要么全部执行,要么全部不执行) 一致性 Consistency:整个交易总体资金不变 隔离性 Isolation: case1: 若张三给李四转账过程中

Java开发工程师(Web方向) - 02.Servlet技术 - 期末考试

Servlet课程考试 Servlet课程考试 Servlet课程考试 总分:55分 限定时间:120分钟 进入考试 答案已成功提交!请耐心等待成绩公布 Servlet课程考试: 1(12分) 简单谈一下你理解的Servlet是什么,以及Servlet的工作原理. Servlet即Server Applet,是在服务器端运行的程序.一个Servlet对象实际上就是一个Java类. 浏览器在与服务器通信时,浏览器先向服务器发出请求,该请求被Servlet容器解析并发送给对应Servlet对象后,由

Java开发工程师(Web方向) - 01.Java Web开发入门 - 第4章.Maven

第4章--Maven Maven实战 Java Web应用的部署: 手动式: 编译:javac -cp $CATALINA_HOME/lib/servlet-api.jar web-inf/classes/package/NoodlesServlet.java 打包:jar cvf Restaurant.war . 移动:mv Restaurant.war .../webapps/ 项目复杂时:比如项目文件很多 -- IDE如eclipse --> IDE式:(如eclipse) 下载第三方依赖

Java开发工程师(Web方向) - 04.Spring框架 - 第2章.IoC容器

第2章.IoC容器 IoC容器概述 abstract: 介绍IoC和bean的用处和使用 IoC容器处于整个Spring框架中比较核心的位置:Core Container: Beans, Core, Context, SpEL 为上层AOP/Aspects/Instrumentation/Messaging提供支持 IoC容器的用途: 创建对象的依赖,最后组装成所需的业务对象 容器通过业务对象和配置(application-context.xml; xxxController.java)-->生

Java开发工程师(Web方向) - 01.Java Web开发入门 - 第6章.蜂巢

第6章--蜂巢 蜂巢简介 网站开发完,就需要测试.部署.在服务器上运行. 网易蜂巢: 采用Docker容器化技术的云计算平台 https://c.163.com 容器管理:容器可被视作为云主机的服务器 服务管理:服务可由多个容器组成,可以有多个副本 镜像仓库:可快速创建容器和服务 后端服务:blahblahblah 特点: 保证环境一致: 实际中开发环境.测试环境.生产环境等会不大相同 环境差异可能会导致业务代码运行得到不同结果 蜂巢底层采用Docker容器:把业务代码和运行环境打包成为一个镜像

Java开发工程师(Web方向) - 04.Spring框架 - 第3章.AOP技术

Spring框架 - AOP概述 笔记https://my.oschina.net/hava/blog/758873Spring框架 - AOP使用 笔记https://my.oschina.net/hava/blog/758881 AOP技术单元测试 返回 本次得分为:7.00/7.00, 本次测试的提交时间为:2017-09-11, 如果你认为本次测试成绩不理想,你可以选择再做一次. 1 单选(2分) 如下关于AOP的描述中错误的是: 得分/总分 A. AOP可以对代码进行解耦: B. A

Java开发工程师(Web方向) - 01.Java Web开发入门 - 第3章.Servlet应用

第3章.Servlet应用 转发与重定向 过滤器与监听器 Servlet并发处理

Java开发工程师(Web方向) - 01.Java Web开发入门 - 第2章.HTTP协议简介

第2章--HTTP协议简介 HTTP协议简介 Abstract: HTTP协议的特性,HTTP请求/响应的过程,HTTP请求/响应的报文格式等知识,最后会演示如何通过Chrome提供的开发者工具,去跟踪调试一次HTTP请求. HTTP protocol: 请求响应式协议: client -->  server : HTTP 请求 client <--  server : HTTP 响应 一个HTTP请求和一个HTTP响应 -->  一次HTTP事务 任意两次HTTP事务都是indepen