首页 > 其他分享 >2022-8-21 第一组 (≥▽≤) 周测试

2022-8-21 第一组 (≥▽≤) 周测试

时间:2022-08-22 14:14:13浏览次数:61  
标签:java 21 第一组 System 2022 statement sql import String

目录

第一题

SELECT stu.`姓名`,stu.`学号` FROM student stu
 LEFT JOIN SC sc ON sc.`学号` = stu.`学号` 
LEFT JOIN Course c ON c.`课程编号` = sc.`课程编号`
 WHERE c.`课程名称` = '计算机原理';

SELECT c.`课程名称` FROM student stu 
LEFT JOIN SC sc ON sc.`学号` = stu.`学号`
 LEFT JOIN Course c ON c.`课程编号` = sc.`课程编号`
 WHERE stu.`姓名` = '周星驰';

SELECT stu.`姓名`,stu.`学号` FROM student stu
 LEFT JOIN SC sc ON sc.`学号` = stu.`学号`
 LEFT JOIN Course c ON c.`课程编号` = sc.`课程编号`
 GROUP BY stu.`学号`
 HAVING COUNT(sc.`课程编号`) = 5;

第二题

第一步

CREATE TABLE `bank`(
    `id` INT  PRIMARY KEY auto_increment,
    `no` VARCHAR(30) UNIQUE,
    `password` VARCHAR(30) ,
    `name` VARCHAR(30),
    `money` DECIMAL 
)

第二步

package exam1;

import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class CreateBankAccount {
    public static void main(String[] args) {
        Scanner scanner =new Scanner(System.in);
        System.out.println("请输入开户的卡号");
        String next = scanner.next();
        System.out.println("请输入开户的名字");
        String next1 = scanner.next();
        System.out.println("请输入开户的密码");
        String next2 = scanner.next();
        System.out.println("请输入开户的钱数");
        double v = scanner.nextDouble();
        new CreateBankAccount().insert(next,next2,next1,new BigDecimal(v));
    }

    public void insert(String no, String password, String name, BigDecimal money) {
        Connection connection = null;
        PreparedStatement statement =null;
        try {
            String sql="insert  into  bank values(null ,?,?,?,? ) ";
            connection= BaseDao.DATA_SOURCE.getConnection();
            statement=connection.prepareStatement(sql);
            statement.setString(1,no);
            statement.setString(2,password);
            statement.setString(3,name);
            statement.setBigDecimal(4,money);
            int i = statement.executeUpdate();
            if (i!=0){
                System.out.println("开户成功");
            }else {
                System.out.println("开户失败");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            BaseDao.release(null,statement,null);
        }
    }
}

第三步

package exam1;

import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class BankAccountTransfer {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的卡号");
        String next2 = scanner.next();
        System.out.println("请输入收款的账户");
        String next = scanner.next();
        System.out.println("请输入收款人姓名");
        String next1 = scanner.next();
        System.out.println("请输入转账金额");
        double v = scanner.nextDouble();
        insert(next2,next,next1,new BigDecimal(v));
    }
    public static  void insert(String no1,String no, String name, BigDecimal money){
        Connection connection =null;
        PreparedStatement statement =null;
        try {
            String sql1="update bank set money=money-? where `no` =? ";
            String sql2="update bank set money=money+? where `no` =? and  `name` =?";
            connection=BaseDao.DATA_SOURCE.getConnection();
            connection.setAutoCommit(false);
            statement=connection.prepareStatement(sql1);
            statement.setBigDecimal(1,money);
            statement.setString(2,no1);
            statement.executeUpdate();

            statement=connection.prepareStatement(sql2);
            statement.setBigDecimal(1,money);
            statement.setString(2,no);
            statement.setString(3,name);
            statement.executeUpdate();
            connection.commit();
            System.out.println("转账成功");
        } catch (SQLException e) {
            try {
                System.out.println("转账失败");
                connection.rollback();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
            e.printStackTrace();
        } finally {
            BaseDao.release(null,statement,null);
        }
    }
}

工具类

package exam1;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Objects;
import java.util.Properties;

public class BaseDao {

    public static final DataSource DATA_SOURCE;

    static {
        Properties properties = new Properties();
        try {
            properties.load(BaseDao.class.getClassLoader().getResourceAsStream("druid.properties"));
            DATA_SOURCE = DruidDataSourceFactory.createDataSource(properties);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

    }

    public static void release(Connection conn, Statement stmt, ResultSet rs) {
        if (Objects.nonNull(stmt)) {
            try {
                stmt.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
        

配置文件

  • druid.properties
druid.driver=com.mysql.cj.jdbc.Driver
druid.url=jdbc:mysql://localhost:3306/night?useSSL=false&serverTimezone=Asia/Shanghai
druid.username=root
druid.password=3306

导入jar包

标签:java,21,第一组,System,2022,statement,sql,import,String
From: https://www.cnblogs.com/gycddd/p/16612596.html

相关文章

  • 2022-8-20 第一组 (≥▽≤) 学习笔记
    目录1.数据库连接池1.1通过数据库连接池来获取连接1.2增删改查的快捷方法1.数据库连接池connection是一种稀有资源,一个连接建立就创造了一个资源。JDBC使用数据库连接......
  • [四、Xcode界面]21几种在控制台输出日志的方式
    热烈欢迎,请直接点击!!!进入博主AppStore主页,下载使用各个作品!!!注:博主将坚持每月上线一个新app!!!......
  • JAVA基础--数组--2022年8月21日
    第一节数组静态定义方式1、数组的静态初始化的写法和特点是什么样的?  2、数组属于什么类型,数组变量中存储的是什么?引用数据类型,存储的是......
  • HDU2022 第一场
    Backpack我不打但我能补题。明显设\(f_j\)表示容量为j的背包的异或的最大值。但是这样的状态难以进行转移。考虑设\(f_{j,k}\)表示容量为j异或为k是否可行。这样状态......
  • 数字电路821
     任何一个逻辑问题,只用一个与非门就能完成。设计一个电路,只需用一种类型的电路就能实现。   就算是3输入与非门,多变量相与还是等于它本身    可以......
  • pr2022如何导入.mogrt文件?pr模板的安装方法
    Mogrt格式的模板文件是一种新型的模板格式,因此对Premiere软件版本的要求较高,导致了许多人在使用模板是会出现不知如何导入的问题。现在小编为大家带来具体导入方法。首先,......
  • 解决github推送错误 remote: Support for password authentication was removed on Au
    推送github仓库代码,输入完账号密码出现:remote:SupportforpasswordauthenticationwasremovedonAugust13,2021.remote:Pleaseseehttps://docs.github.com/en/......
  • 2022-08-22 原生js输出span标签中的文本内容
    使用innerText。例:<spanclass="value">九月廿八</span>  varcopyBtn=document.getElementsByClassName('value')[2];  varcwjBtn......
  • 2022年二季度美国乘用车市场份额
    U.S.lightvehiclemarketsharein2022Q2:Ford13.18%Toyota12.12%Chevrolet11.16%Honda6.25%Jeep5.43%Hyundai5.35%Nissan5.02%Kia5.02%Ram4.01%GMC3.84%Sub......
  • 2022-8-22 剑指offer-优先队列-每日一题-二叉树-搜索/递归
    剑指OfferII060.出现频率最高的k个数字难度中等36收藏分享切换为英文接收动态反馈给定一个整数数组 nums 和一个整数 k ,请返回其中出现频率前 k 高的元......