• 002.测验.Java之拼装SQL



    题图:两脚站在同一根高压电线上,电流基本上不从小鸟身上流过,小鸟是不会被电到的。

    002.测验.Java之拼装SQL

    这是一个十分简单但不实用的编程练习,拼装SQL。
    select一个表,where很多单纯的and条件。

    作者:史荣久 日期:2014-11-26 许可:CC BY-SA 3.0

    任务说明

    实现以下接口,完成练习目标。

    package com.moilioncircle.kiss;
    
    public interface Sql {
    
        public Sql select(String... fields);
    
        public Sql from(String table);
    
        public Sql where(String fieldAndOperator, Object value);
    
        public Sql and(String fieldAndOperator, Object value);
    
        public String build();
    }
    

    任务目标

    (1) 以下6个build()得出的sql,在MySql上执行,都返回1条记录。

    Sql sql = new <your-Sql-impl>();
    sql.select("id","birthday","homedir","description")
       .from("sqltest")
       .where("homedir=", "d:\jonny\")
       .build();
    
    sql.select("count(*)")
       .from("sqltest")
       .where("id>", Integer.valueOf(1))
       .and("birthday=", Date.valueOf("1971-01-01"))
       .build();
    
    sql.select("count(*)")
       .from("sqltest")
       .build();
    
    sql.select("1").build();
    
    sql.select("count(*)")
       .from("sqltest")
       .where("description=", "jonny's pet")
       .build();
    
    sql.select("count(*)")
       .from("sqltest")
       .where("description=", "ben said "hi tom!"")
       .build();
    

    (2) 以下3个build(),抛出异常(选择舒服的异常类型)

    sql.select("").build();
    
    sql.select(null).build();
    
    sql.select("count(*)")
       .where("description=", "jonny's pet")
       .build();
    

    测试数据

    通过以下SQL创建表和数据。

    CREATE TABLE `sqltest` (
    `id` INT NOT NULL,
    `birthday` DATE NULL,
    `homedir` VARCHAR(45) NULL,
    `description` VARCHAR(45) NULL,
    PRIMARY KEY (`id`));
    
    insert into sqltest(id,birthday,homedir,description) values
    (1,'1971-01-01','d:\jonny\','jonny''s pet'),
    (2,'1971-02-01','d:\tom','tom is good'),
    (3,'1972-03-01','d:\ben','ben said "hi tom!"');
    
  • 相关阅读:
    区块链|肖臻《区块链技术与应用》公开课之以太坊篇
    区块链|肖臻《区块链技术与应用》公开课之比特币篇
    复合数据类型
    广播变量和累加器
    mysql_基本操作
    8.10 NOI模拟赛 fzhtql SAM 后缀数组 启发式合并 dsu on tree 树状数组 set 线段树合并
    心态
    7.29 NOI 模拟赛 Stars 状压 dp
    8.2 NOI模拟赛 Palindrome dp 组合计数 分类讨论
    7.30 NOI模拟赛 B Easy Sum 分块 NTT
  • 原文地址:https://www.cnblogs.com/moilioncircle/p/4266745.html
Copyright © 2020-2023  润新知