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