一. 前言
在前两章教程中,分别介绍了DOS环境搭建和Eclipse环境搭建。
本章将带大家实现用简单SQL语句查询文件。
注:
1.本文针对初学Java的同学训练学习思路,请不要太纠结于细节问题。
2.本文旨在达到抛砖引玉的效果,希望大家扩展本例子,以学到更多知识的精髓。
二. 写给初学Java的同学
在介绍本章内容之前,首先介绍一下Java的学习方法。
相信大家在看本文的时候已经已经拿到了各种Java学习路径,大体都是一样。
我想说的是,不要让知识的学习成为负担,Java技术种类繁多,是无论如何也学不完的。
正确的学习方法是兴趣驱动,实例驱动。
即通过一个简单的实例,不断加入所学知识进行扩展,最终扩展为一个大项目,达到系统学习,学以致用的效果。
三. 步入正题
话不多说,大家自己理解,下面步入正题:
练习1.
概要:本地有一个csv格式文件,用SQL语句查出结果。
前提:本地有一个csv格式文件
例:abc.csv放在c:/temp文件夹下,内容如下:
id,username,password 1,abc,aaa 2,def,bbb 3,xyz,ccc输入:文件路径和sql语句
例:
GetFile gf = new GetFile("c:/temp/"); gf.queryFile("select * from abc.csv");
输出:查询结果
例:
1,abc,aaa 2,def,bbb 3,xyz,ccc
请先自己动手想办法实现,实在做不出来再往下看,否则失去了练习的意义。
四. 实现步骤
首先,我们需要解析SQL语句。是的,标准的写法是把SQL转化成语法树(AST),然后再解析这颗语法树。
但这篇文章面对的是初学者,我的目的是训练字符串的拆分,拼接,文件读取等基本操作,以及分析问题的方法。
所以,把问题简单化。
首先确认程序功能的边界:
下面是这个程序支持的最复杂的SQL语句(只支持单层的and条件):
select id,username from abc.csv where username=abc and password=aaa
所以,我们首先需要检查SQL的正确性:
・必须包含select,from
・可以包含where
・且循序必须为select,from,where
代码如下:
/** * @author http://www.java123.vip * @param sql * @return */ private boolean checkSql(String sql) { int selectPos = sql.indexOf("select"); int fromPos = sql.indexOf("from"

