`
trydofor
  • 浏览: 144837 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

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!"');


-----
题图:两脚站在同一根高压电线上,电流基本上不从小鸟身上流过,小鸟是不会被电到的。
原文:http://www.moilioncircle.com/actions/002.quiz.java-build-sql.html
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics