zoukankan      html  css  js  c++  java
  • 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!"');
    
  • 相关阅读:
    笔记:HttpResponse类
    既生瑜何生亮,为何有了类还要有结构?
    dotnet 文件下载后文件名乱码
    SQL SERVER临时表的使用
    笔记:SQL SERVER 2005中的同步复制技术(转)
    .net 四种错误处理机制
    DotNET 长文章分页方法
    HTML标签过滤方案
    过滤查询条件LIKE里面的关键字符
    理解HTTP消息头
  • 原文地址:https://www.cnblogs.com/moilioncircle/p/4266745.html
Copyright © 2011-2022 走看看