002.测验.Java之拼装SQL

[img]http://www.moilioncircle.com/images/post/actions/002/002.jpg[/img]

[b]002.测验.Java之拼装SQL[/b]

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

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

[b]任务说明[/b]

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


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();
}


[b]任务目标[/b]

(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();

[b]测试数据[/b]

通过以下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!"');


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值