欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Sql Hacks 阅读感悟——联机应用 SQL应用服务器PowerBuilderExcelWeb 

程序员文章站 2024-03-22 19:30:16
...

SQL基础:《SQL HACKS》第6章——联机应用,总共列举了8tips,将WEB页面复制到表中、使用SVG图像化地展示数据和将导航特性添加到Web应用上等,下述为我对这8tips的评析。

#41 web页面复制到表中

场景描述及解决方案:作者利用xslt技术将特定格式的web页面提取到数据表中。

评析:个人认为,现在从web页面提取内容没必要搞的那么复杂,借助excel通用工具,简单的复制、粘贴web页面到excel表单,继续加工处理,可以满足绝大多数数据提取需求。当然高级用户还可以直连用excelweb页面作为数据源进行提取。

#42 使用SVG图像化地展示数据

场景描述:给定表格数据如下,要求饼图输出。

Id

Color

v

l

h

Conservative

Blue

40

0

40

Labour

Red

30

40

70

Lib-Dem

Yellow

20

70

90

Other

white

10

90

100

评析:就本tip本身使用svg图像化地展示数据,个人并不推荐这个做法。但是,其中涉及到的根据已给的v,求low-high区间倒是在实际应用中挺有用处,如表格的黄色标注部分。

test=# select id, coalesce((select sum(v) from t42 where id<x.id), 0) as s,

test-# (select sum(v) from t42 where id<=x.id) as e

test-# from t42 x order by id;

#43 将导航特性添加到Web应用上

场景描述:给定一张联系人信息表,关键字段是full name,要求对联系人从A-Z进行分组,并统计A开头的有几个?

解决方案:截取联系人full name的首个字母,并进行分组及分组计数。

test=# select substring(name,1,1) as ltr,

test-# min(name) as fst,

test-# max(name) as lst,

test-# count(*) as cnt

test-# from t43 group by substring(name,1,1)

test-# order by 1;

评析:该tip在很多场景中都有应用,比如去医院体检,报上你的姓名,然后医务人员就会在开头字母的抽屉中找到你的体检项目表等。核心就是字符串的截取和分组统计功能的使用。

#44 Microsoft Access中隧道访问Mysql

评析:熟悉powerbuilder的朋友,请建议使用powerbuilder的数据管道功能,可以轻松操作其他数据源。

#45 处理Web服务器日志

评析:由于现在都有成熟的日志分析工具,现在此处不展开。

#46 在数据库中存储图像

评析:本tip只要注意不同的数据库其存储图像的字段类型不同,有blobimage类型,postgresql则是bytea类型。另外,在数据库中存储图像通常有2种处理方式:

1) 存储byte流;

2) 存储图像路径,图像实体在其它存储介质上。

选用何种方式视具体情况而定。

#47 利用sql注入漏洞

#48 防止sql注入攻击

评析:sql注入通常发生在用户登陆的时候,如转义字符的处理,--注释的使用等。由于目前j2ee应用jdbc操作基本上基于预处理,因此sql注入相对来说已经危害不大。按照作者的说法不要低估SQL注入攻击的威力,也不应高估它。我们需注意常用的防止sql注入攻击手段:

1) preparestament使用;

2) 转义字符的特殊处理,如单引号的处理。